写高质量OC代码52建议总结:33.以弱引用避免保留环

xiaoxiao2021-02-27  390

几个对象都以某种方式互相引用,从而形成保留环。由于OC内存管理模型使用引用计数架构,所以这种情况通常会导致内存泄漏,因为最后没有别的对象会引用环中的对象。环里的对象将永久存活,不会被系统回收。

避免保留环的最佳方式就是弱引用,即“非拥有关系”。OC中有一项与ARC相伴的运行期特征,可以令开发者安全的使用弱引用,weak,它和unsafe_unretained的作用完全相同。只要系统把属性回收,属性值就自动设为nil。

但是,只要在所指对象已经彻底销毁后还继续使用弱引用,那就依然是个bug。比如说,用户界面中的某个元素会把数据源设置给某个属性,并通过它来查询将要显示的数据了。

总结: 1.将某些引用设置为weak,可避免出现“保留环”。 2.weak引用可以自动清空,也可以不自动清空。自动清空是随着ARC而引入的新特性,由运行期系统来实现。在具备自动清空的弱引用上,可以随意读取其数据,因为这种引用不会指向已经回收过的对象。

转载请注明原文地址: https://www.6miu.com/read-1035.html

最新回复(0)