如何在Swift中调用deinit [英] How to call deinit in Swift

查看:689
本文介绍了如何在Swift中调用deinit的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了一个代码块如下:

I wrote a code block as the following:

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 即可。将person设置为 nil 时,不会调用 deinit 方法。

When initialized,print is ok. When set person to nil,the deinit method is not called.

推荐答案

问题在于游乐场不是现实生活。这只是不使用它们的另一个原因(我认为它们在Apple方面是一个可怕的错误)。使用真实的iOS应用程序项目,将按预期调用 deinit

The problem is that a playground is not real life. This is just one more reason for not using them (I think they are a terrible mistake on Apple's part). Use a real iOS app project and deinit will be called as expected.

来自真实项目的示例:

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

这可以达到预期目的。

这篇关于如何在Swift中调用deinit的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆