Swift 教程
- 第1节:Swift 介绍
- 第2节:Swift 环境搭建
- 第3节:Swift 基本语法
- 第4节:Swift 数据类型
- 第5节:Swift 变量
- 第6节:Swift 可选(Optionals)类型
- 第7节:Swift 常量
- 第8节:Swift 字面量
- 第9节:Swift 运算符
- 第10节:Swift 条件语句
- 第11节:Swift 循环
- 第12节:Swift 字符串
- 第13节:Swift 字符(Character)
- 第14节:Swift 字典
- 第15节:Swift 数组
- 第16节:Swift 函数
- 第17节:Swift 闭包
- 第18节:Swift 枚举
- 第19节:Swift 结构体
- 第20节:Swift 类
- 第21节:Swift 属性
- 第22节:Swift 方法
- 第23节:Swift 下标脚本
- 第24节:Swift 继承
- 第25节:Swift 构造过程
- 第26节:Swift 析构过程
- 第27节:Swift 可选链
- 第28节:Swift 自动引用计数(ARC)
- 第29节:Swift 类型转换
- 第30节:Swift 扩展
- 第31节:Swift 协议
- 第32节:Swift 访问控制
Swift 析构过程
Swift 析构过程
在一个类的实例被释放之前,析构函数被立即调用。用关键字deinit
来标示析构函数,类似于初始化函数用init
来标示。析构函数只适用于类类型。
析构过程原理
Swift 会自动释放不再需要的实例以释放资源。
Swift 通过自动引用计数(ARC)处理实例的内存管理。
通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。
例如,如果创建了一个自定义的类来打开一个文件,并写入一些数据,你可能需要在类实例被释放之前关闭该文件。
语法
在类的定义中,每个类最多只能有一个析构函数。析构函数不带任何参数,在写法上不带括号:
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++;
}
deinit {
counter--;
}
}
var show: BaseClass? = BaseClass()
print(counter)
print(counter)
以上程序执行输出结果为:
1
1