swift简单总结(二十六)—— 析构过程

版本记录

版本号 时间
V1.0 2017.07.30

前言

我是swift2.0的时候开始接触的,记得那时候还不是很稳定,公司的项目也都是用oc做的,并不对swift很重视,我自己学了一段时间,到现在swift3.0+已经出来了,自己平时也不写,忘记的也差不多了,正好项目这段时间已经上线了,不是很忙,我就可以每天总结一点了,希望对自己对大家有所帮助。在总结的时候我会对比oc进行说明,有代码的我会给出相关比对代码。
1. swift简单总结(一)—— 数据简单值和类型转换
2. swift简单总结(二)—— 简单值和控制流
3. swift简单总结(三)—— 循环控制和函数
4. swift简单总结(四)—— 函数和类
5. swift简单总结(五)—— 枚举和结构体
6. swift简单总结(六)—— 协议扩展与泛型
7. swift简单总结(七)—— 数据类型
8. swift简单总结(八)—— 别名、布尔值与元组
9. swift简单总结(九)—— 可选值和断言
10. swift简单总结(十)—— 运算符
11. swift简单总结(十一)—— 字符串和字符
12. swift简单总结(十二)—— 集合类型之数组
13. swift简单总结(十三)—— 集合类型之字典
14. swift简单总结(十四)—— 控制流
15. swift简单总结(十五)—— 控制转移语句
16. swift简单总结(十六)—— 函数
17. swift简单总结(十七)—— 闭包(Closures)
18. swift简单总结(十八)—— 枚举
19. swift简单总结(十九)—— 类和结构体
20. swift简单总结(二十)—— 属性
21. swift简单总结(二十一)—— 方法
22. swift简单总结(二十二)—— 下标脚本
23. swift简单总结(二十三)—— 继承
24. swift简单总结(二十四)—— 构造过程
25. swift简单总结(二十五)—— 构造过程

析构过程 - Deinitialization

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

下面将从两方面讲述析构过程。

  • 析构过程原理
  • 析构函数操作

析构过程原理

  swift会自动释放不再需要的实例以释放资源,会通过自动引用计数处理实例的内存管理,一般不用手动去处理,但是,当使用自己的资源,你可能需要进行一些额外的清理,比如,如果创建了一个自定义的类打开一个文件,并写入一些数据,你可能需要在类实例被释放之前关闭该文件。

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

    deinit {
        //执行析构过程
    }

  析构函数在实例释放前被自动调用,不允许主动调用自己的析构函数,子类继承了父类的析构函数,并且在子类析构函数实现的最后,父类的析构函数被自动调用,即使子类没有提供自己的析构函数,父类的析构函数也总是被调用。


析构函数操作

下面看一个析构器的例子,BankPlayer两种类型,Bank结构体管理一个虚拟货币的流通。

struct Bank {
    static var coinsInBank = 10_000
    static func vendCoins(var numberOfCoinsToVend : Int) -> Int{
        numberOfCoinsToVend = min(numberOfCoinsToVend, coinsInBank)
        coinsInBank -= numberOfCoinsToVend
        return numberOfCoinsToVend
    }

    static func receiveCoins(coins : Int){
        coinsInBank += coins
    }
}
class Player{
    var coinsInPurse : Int
    init(coins : Int){
        coinsInPurse = Bank.vendCoins(coins)
    }
    
    func winCoins(coins : Int) {
    coinsInPurse += Bank.vendCoins(coins)
    }
    
    deinit {
        Bank.receiveCoins(coins: coinsInPurse)
    }
}

后记

未完,待续~~~

swift简单总结(二十六)—— 析构过程_第1张图片
水乐

你可能感兴趣的:(swift简单总结(二十六)—— 析构过程)