一尘不染

如何在Swift中调用deinit

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后就可以了。将人员设置为时nildeinit不调用该方法。


阅读 853

收藏
2020-07-07

共1个答案

一尘不染

问题在于操场不是现实生活。这只是不使用它们的又一个原因(我认为,对于苹果公司而言,这是一个可怕的错误)。使用真实的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;
    }
}

这就是您期望的。

2020-07-07