知识点总结 - block循环引用

如果对象内部有一个Block属性,而Block内部又访问了该对象,那么会造成循环引用,解决办法是对该对象使用一个弱指针来修饰,然后在block内部使用弱指针修饰的改对象来进行操作,这样避免了block 对对象的强引用,示例如下:


 
 
@interface Person : NSObject @property (nonatomic, copy) void(^myBlock)(); @end @implementation Person - (void)dealloc { NSLog(@"Person dealloc"); } @end Person *p = [[Person alloc] init]; __weak typeof(p) weakP = p; p.myBlock = ^{ NSLog(@"------%@", weakP); }; p.myBlock(); // Person对象在这里可以正常被释放
作者:蚊香酱 链接:http://www.jianshu.com/p/14efa33b3562 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/melon30/article/details/78809509