iOS 循环引用

1.循环引用一般是指:A持有B,B同时持有A,从而导致死循环无法释放对象。

2.一般循环引用出现在block和delegate中,而一般解决方法就是将self变成weakSelf(强引用变成弱引用),但是在不是所有的情况下都需要将self变成weakSelf。

__weak typeof(self) weakSelf = self; // 强引用转弱引用

以block为例:当self引用了block(非局部变量)时,此时block中引用self时就会出先循环引用;如果self没有持有block或者局部变量引用block时,此时就算block中引用了self也不会引起循环引用。

 

posted @ 2016-07-19 14:57  ~道一~  阅读(233)  评论(0编辑  收藏  举报