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

相關文章
相關標籤/搜索