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