Swift 析构过程
在一个类的范例被释放之前,析构函数被立即调用。用关键字deinit
来标示析构函数,类似于初始化函数用init
来标示。析构函数只适用于类类型。
1. 析构过程原理
Swift 会自动释放不再需要的范例以释放资源。
Swift 通过自动引用计数(ARC)处理范例的内存管理。
通常当你的范例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。
例如,如果创建了一个自定义的类来打开一个文件,并写入一些数据,你可能需要在类范例被释放之前关闭该文件。
2. 语法
在类的定义中,每个类最多只能有一个析构函数。析构函数不带任何参数,在写法上不带括号:
deinit { // 执行析构过程 }
3. 范例
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
可选链(Optional Chaining)是一种可以请求和调用属性、方法和子脚本的过程,用于请求或调用的目标可能为nil。可选链返回两个值:如果目标有值,调用就会成功,返回该值如果目标为nil,调用将返回nil多次请求 ...