我写了一个代码块如下:
class Person{
let name:String;
init(name:String){
self.name = name;
println("\(name) is being initialized.");
}
deinit{
println("\(name) is being deInitialized.");
}
}
var person:Person?;
person = Person(name:"leo");
person = nil;
初始化时,print
没问题。将人员设置为nil
时,不会调用deinit
方法。
答案 0 :(得分:18)
问题是操场不是现实生活。这只是不使用它们的另一个原因(我认为它们在Apple方面是一个可怕的错误)。使用真实的iOS应用程序项目,deinit
将按预期调用。
来自真实项目的示例:
class ViewController: UIViewController {
class Person{
let name:String;
init(name:String){
self.name = name;
println("\(name) is being initialized.");
}
deinit{
println("\(name) is being deInitialized.");
}
}
override func viewDidLoad() {
super.viewDidLoad()
var person:Person?;
person = Person(name:"leo");
person = nil;
}
}
这就是你期望它做的事情。