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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值