swift3-21 析构过程

在一个类的实例被释放之前,析构函数就被立即调用,用关键字 deinit 来表示析构函数, 类似与初始化使用 init 来标示。析构函数只适用于类类型。

析构过程原理 Swift会自动释放不在需要的实例以释放资源。通过ARC处理实例的内存管理。通常实例被释放是不需要手动清理的。但是当使用到一些资源的 时候可能就需要额外的清理了。比如打开另一个文件写入数据,就需要在实例被释放前关闭该文件。

语法:在类的定义中,每个类最多只有一个析构函数,析构函数不带任何参数,不带括号

deinit{
   //执行析构过程
}

示例:deinit的调用时机

var counter = 0;  
class BaseClass {
    init() {
        counter += 1;
    }
    deinit {
        counter -= 1;
    }
}

var show: BaseClass? = BaseClass()
print(counter) // 1
show = nil  
print(counter) // 0