首页 > 代码库 > 第33条:以弱引用避免保留环
第33条:以弱引用避免保留环
本条要点:(作者总结)
对象图里经常会出现一种情况,就是几个对象都以某种方式互相引用,从而形成“环”(cycle)。由于 Objective-C 内存管理模型使用引用计数架构,所以这种情况通常会泄漏内存,因为最后没有别的东西会引用环中的对象。这样的话,环里的对象就无法为外界所访问了,但对象之间尚有引用,这些引用使得它们都能继续存活下去,而不会为系统所回收。
最简单的保留环由两个对象构成,它们互相引用对方,图举例说明了这种情况。
两个对象通过彼此之间的强
这种保留环的产生原因不难理解,且很容易就能通过查看代码而侦测出来:
1 #import <Foundation/Foundation.h> 2 3 @class EOCClassA; 4 5 @class EOCClassB; 6 7 8 9 @interface EOCClassA : NSObject 10 11 @property (nonatomic, strong) EOCClassB *other; 12 13 @end 14 15 16 17 @interface EOCClassB : NSObject 18 19 @property (nonatomic, Strong) EOCClassA *other; 20 21 @end
看代码很容易就能发现其中可能出现的保留环: 如果把 EOCClassA 实例的 other 属性设置成某个 EOCClassB 实例,而把这个 EOCClassB 实例的 other 属性又设置成这个 EOCClassA 实例,那么就会出现图中的保留环。
第33条:以弱引用避免保留环
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。