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