6.8 实例的引用特征和Swift的内存管理 [Swift教程]
2018-04-11 本文已影响9人
互动教程网
1. 开发语言使用自动引用计数,跟踪并管理应用分配的内存。当实例不再被使用时,会自动释放这些类的实例所占用的内存。
![](https://img.haomeiwen.com/i5981183/84dc27b539383795.png)
2. 本节课将为你演示自动引用计数对实例引用的管理,首先定义一个用来创建实例的类。
![](https://img.haomeiwen.com/i5981183/ff9d30c604e7661b.png)
![](https://img.haomeiwen.com/i5981183/7b763f2e4a7eaedb.png)
![](https://img.haomeiwen.com/i5981183/b5498720f532e112.png)
5. 接着添加一个析构方法,当该类的实例的引用计数为0时,该方法将被调用(也许不会立即被调用)。
![](https://img.haomeiwen.com/i5981183/2987aa859ab2f1c1.png)
6. 然后初始化一个该类的实例对象,并初始化对象的属性的值。
![](https://img.haomeiwen.com/i5981183/a2578fce0a625b52.png)
![](https://img.haomeiwen.com/i5981183/7993288d48755a4a.png)
8. 从右侧的结果可以看出,这三个变量都是对类的同一个实例的引用。
![](https://img.haomeiwen.com/i5981183/2c848deb0094b253.png)
9. 接着将实例的第一个引用设置为空,此时右侧的结果显示该引用已经为空,实例对象的引用计数变为2。
![](https://img.haomeiwen.com/i5981183/460efb2696981ef8.png)
10. 从打开的控制台可以看出,析构方法并没有被调用,否则会输出相应的日志。
![](https://img.haomeiwen.com/i5981183/804ba352d3b1b1b6.png)
11. 继续将实例的第二个引用也设置为空,引用计数降为1,由于该实例仍然被引用,所以没有输出析构日志。
![](https://img.haomeiwen.com/i5981183/046d871d57643395.png)
12. 将实例的第三个引用也设置为空,引用计数降为0,由于该实例再也没有被引用,所以在控制台输出了析构日志。
![](https://img.haomeiwen.com/i5981183/9577bee5551c5243.png)
![](https://img.haomeiwen.com/i5981183/98d8fc70eb7456a3.png)
本文整理自:《Swift4互动教程》,真正的[手把手]教学模式,用最快的速度上手iOS开发和Swift语言,苹果商店App Store免费下载:https://itunes.apple.com/cn/app/id1320746678,或扫描本页底部的二维码。课程配套素材下载地址:资料下载