我编写了如下代码块:
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不调用该方法。
print
nil
deinit
问题在于操场不是现实生活。这只是不使用它们的又一个原因(我认为,对于苹果公司而言,这是一个可怕的错误)。使用真实的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; } }
这就是您期望的。