十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字deinit来标示,类似于构造器用init来标示。

在类的定义中,每个类最多只能有一个析构函数。析构函数不带任何参数,在写法上不带括号:
deinit {
   // 执行析构过程
}
var counter = 0;  // 引用计数器
class BaseClass {
   init() {
       counter += 1;
   }
   deinit {
       counter -= 1;
   }
}
var show: BaseClass? = BaseClass()
print(counter)
show = nil
print(counter)
以上程序执行输出结果为:
1
0
当 show = nil 语句执行后,计算器减去 1,show 占用的内存就会释放。
var counter = 0;  // 引用计数器
class BaseClass {
   init() {
       counter += 1;
   }
   
   deinit {
       counter -= 1;
   }
}
var show: BaseClass? = BaseClass()
print(counter)
print(counter)
以上程序执行输出结果为:
1
1