如何在Swift中调用deinit

时间:2014-09-29 02:51:20

标签: ios swift

我写了一个代码块如下:

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方法。

1 个答案:

答案 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;
    }
}

这就是你期望它做的事情。