永远不会调用Deinit方法-Swift Playground

在下一个代码中,我尝试调用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.

回答:

Playgrounds适用于Swift的Xcode

不能像常规应用程序一样工作;它们不只运行一次。创建的对象保留在内存中,可以检查直到更改代码为止,此时将重新评估整个操场。发生这种情况时,所有先前的结果都将被丢弃,并且所有对象都将被释放时,您将看不到任何结果。

您的代码是正确的,但是Playgrounds不适合测试与内存管理有关的事物。

以上是 永远不会调用Deinit方法-Swift Playground 的全部内容, 来源链接: utcz.com/qa/428331.html

回到顶部