在下一个代码中,我尝试调用deinit方法以释放对该Person Class实例的所有引用,Mark但从未调用过deinit。为什么?
Person Class
Mark
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
您的代码是正确的,但是Playgrounds不适合测试与内存管理有关的事物。