一尘不染

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

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.

阅读 820

收藏
2020-07-07

共1个答案

一尘不染

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

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

2020-07-07