1. 本节课将通过一个实例,演示内存的泄露问题以及如何修复。
2. 首先定义一个用来创建实例的类。
3. 给类添加一个属性。
4. 添加第二个属性,该属性的类型是一个自定义的类。我们将在后面的代码中实现该类。
5. 添加一个初始化方法,以对名称属性进行设置。
6. 接着添加一个析构方法,当该类的实例的引用计数为0时,该方法将被调用。
7. 然后实现另一个自定义类。
8. 给类添加两个属性,第二个属性的类型是第一个自定义类。这样两个类型的实例,就形成了相互引用的状态。
9. 添加一个初始化方法,以对名称属性进行设置。
10. 接着添加一个析构方法,当该类的实例的引用计数为0时,该方法将被调用。
11. 声明两个自定义类型的对象。
12. 接着对两个对象进行初始化操作,然后点击显示调试区图标,打开控制台。
13. 在控制台显示了两个对象的初始化日志。
14. 接着分别设置两个对象的实例属性,使两者相互交叉引用。
15. 此时将两个实例对象设置为空,发现并没有在底部的控制台输出析构日志,说明它们的引用计数不为零。点击垂直滚动条,查看上方的内容。
16. 那么如何避免因为交叉引用,而造成的内存泄露呢,我们只需要对其中一个引用稍加修改。
17. 在声明变量的前方,增加了weak弱引用标识符,向编译器说明不希望持有对该实例的引用。此时在控制台输出了析构日志,说明内存已经被正常释放了。
本文整理自:《Swift4互动教程》,真正的
[手把手]教学模式,用最快的速度上手iOS开发和Swift语言,苹果商店App Store免费下载:
https://itunes.apple.com/cn/app/id1320746678,或扫描本页底部的二维码。课程配套素材下载地址:
资料下载