iOS开发 - 「Swift 学习」Swift的析构函数dein
2022-03-12 本文已影响0人
俺不是大佬儿
Swift的析构过程,在类的的实例被释放之前,析构函数被立即调用,析构函数只适用于类的类型
使用deinit来标示析构函数
析构过程原理:
Swift 通过自动引用计数(ARC)处理实例的内存管理,自动释放不再需要的实例以释放资源
通常当实例被释放时不需要手动地去清理。但是,当使用自己的资源时,可能需要进行一些额外的清理需要析构函数
例:如果创建了一个自定义的类来打开一个文件,并写入一些数据,可能需要在类实例被释放之前关闭该文件。
语法:
在类的定义中,每个类最多只能有一个析构函数
,析构函数不带有任何的参数
,在语法上不带括号
deinit {
// 执行析构过程
}
//析构函数实例
var counter = 0;
class BaseClass{
init(){
counter += 1
}
//析构函数
deinit{
counter -= 1
}
}
调用
var show:BaseClass? = BaseClass()
print("第一次初始化完成后的引用计数:\(counter)")
//show = nil执行后,析构函数deinit会被立即调用计算-1,show占用的内存会随之释放
show = nil
print("show被释放后的引用计数:\(counter)")
调用结果
第一次初始化完成后的引用计数:1
show被释放后的引用计数:0