课程表

Swift课程

工具箱
速查手册

Swift 析构过程

当前位置:免费教程 » 移动开发 » Swift

在一个类的实例被释放之前,析构函数被立即调用。用关键字deinit来标示析构函数,类似于初始化函数用init来标示。析构函数只适用于类类型。


析构过程原理

Swift 会自动释放不再需要的实例以释放资源。

Swift 通过自动引用计数(ARC)处理实例的内存管理。

通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。

例如,如果创建了一个自定义的类来打开一个文件,并写入一些数据,你可能需要在类实例被释放之前关闭该文件。

语法

在类的定义中,每个类最多只能有一个析构函数。析构函数不带任何参数,在写法上不带括号:

  1. deinit {
  2. // 执行析构过程
  3. }

实例

  1. var counter = 0; // 引用计数器
  2. class BaseClass {
  3. init() {
  4. counter++;
  5. }
  6. deinit {
  7. counter--;
  8. }
  9. }
  10.  
  11. var show: BaseClass? = BaseClass()
  12. print(counter)
  13. show = nil
  14. print(counter)

在线运行实例

以上程序执行输出结果为:

  1. 1
  2. 0

当 show = nil 语句执行后,计算器减去 1,show 占用的内存就会释放。

  1. var counter = 0; // 引用计数器
  2.  
  3. class BaseClass {
  4. init() {
  5. counter++;
  6. }
  7. deinit {
  8. counter--;
  9. }
  10. }
  11.  
  12. var show: BaseClass? = BaseClass()
  13.  
  14. print(counter)
  15. print(counter)

在线运行实例

以上程序执行输出结果为:

  1. 1
  2. 1
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号