ARC 下的循环引用 与 解决办法

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

相关文章
相关标签/搜索