永远不会调用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