1.多个对象间 循环引用 spa
@interface Test : NSObject{ id __strong obj_; } -(void)setObject:(id __strong)obj; @end @implementation Test -(void)setObject:(id __strong)obj{ obj_ = obj; } @end //循环引用 id test0 = [[Test alloc] init]; id test1 = [[Test alloc] init]; [test0 setObject:test1]; [test1 setObject:test0];
2. 只有一个对象时,对象持有其自身时,也会发生循环引用(自引用)code
id test = [[Test alloc] init]; //本身引用本身 [test setObject:test];
3.如何解决循环引用?对象
使用 __weak 修饰符 能够避免循环引用it
__weak修饰符 与 __strong 修饰符相反,提供弱引用。弱引用不能持有对象实例 (引用计数器不会加1)io