Deinit方法从来不叫 – Swift游乐场

在下一个代码中,我试图调用deinit方法释放所有对Person Class实例Mark的引用,但是deinit不会被调用。 为什么?

 class Person{ let name:String init(name:String){ self.name = name println("Person created") } deinit { println("Person \(name) deinit") } } var Mark:Person? = Person(name:"Mark") Mark = nil // Shouldn't the person deinit method be called here? It doesn't. 

Xcode的Swift Playgrounds不像普通的应用程序一样工作, 他们不是只运行一次。 创build的对象留在内存中,可以检查,直到你改变代码,在这一点上整个操场重新评估。 发生这种情况时,先前的所有结果都将被丢弃,而所有对象都将被释放,您将不会看到任何输出。

你的代码是正确的,但是Playgrounds不适合testing与内存pipe理有关的东西。

下面是一个相关的SO问题: swift playground / deinit {}中的内存泄漏没有被一致地调用