如何在Swift中调用deinit
我写了一个代码块如下:
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
方法。
问题是操场不是现实生活。 这只是另一个不使用它们的原因(我认为这对苹果来说是一个可怕的错误)。 使用一个真正的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; } }
这就是你所期望的。