使用block时什么情况会发生引用循环,如何解决?

2016-08-19  本文已影响161人  iOS_Alex

一个对象中强引用了block,在block中又强引用了该对象,就会发射循环引用。

解决方法是将该对象使用__weak或者__block修饰符修饰之后再在block中使用。

id weak weakSelf = self; 或者 weak __typeof(&*self)weakSelf = self该方法可以设置宏

id __block weakSelf = self;

或者将其中一方强制制空xxx = nil。

检测代码中是否存在循环引用问题,可使用 Facebook 开源的一个检测工具FBRetainCycleDetector

上一篇下一篇

猜你喜欢

热点阅读