- 快速教程
- 斯威夫特 - 主页
- 斯威夫特 - 概述
- Swift - 环境
- Swift - 基本语法
- Swift - 数据类型
- Swift - 变量
- Swift - 可选
- Swift - 元组
- Swift - 常量
- Swift - 文字
- Swift - 运算符
- Swift - 决策
- Swift - 循环
- Swift - 字符串
- 斯威夫特 - 角色
- Swift - 数组
- Swift - 套装
- 斯威夫特 - 字典
- Swift - 函数
- Swift - 闭包
- Swift - 枚举
- Swift - 结构
- Swift - 类
- Swift - 属性
- Swift - 方法
- Swift - 下标
- Swift - 继承
- Swift - 初始化
- Swift - 去初始化
- Swift - ARC 概述
- Swift - 可选链接
- Swift - 类型转换
- Swift - 扩展
- Swift - 协议
- Swift - 泛型
- Swift - 访问控制
- 斯威夫特有用的资源
- Swift - 在线编译
- Swift - 快速指南
- Swift - 有用的资源
- 斯威夫特 - 讨论
Swift - 去初始化
在需要释放类实例之前,必须调用“deinitializer”来释放内存空间。关键字“deinit”用于释放系统资源占用的内存空间。反初始化仅适用于类类型。
去初始化以释放内存空间
当不再需要实例时,Swift 4 会自动释放实例以释放资源。Swift 4 通过自动引用计数 (ARC) 处理实例的内存管理,如自动引用计数中所述。通常,当实例被释放时,您不需要执行手动清理。但是,当您使用自己的资源时,您可能需要自己执行一些额外的清理工作。例如,如果您创建自定义类来打开文件并向其中写入一些数据,则可能需要在释放类实例之前关闭该文件。
var counter = 0; // for reference counting class baseclass { init() { counter++; } deinit { counter--; } } var print: baseclass? = baseclass() print(counter) print = nil print(counter)
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
1 0
当省略 print = nil 语句时,计数器的值保持不变,因为它没有被取消初始化。
var counter = 0; // for reference counting class baseclass { init() { counter++; } deinit { counter--; } } var print: baseclass? = baseclass() print(counter) print(counter)
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
1 1