您的位置:首页 > 其它

block循环引用问题

2016-05-17 18:46 218 查看

先来说下为什么会产生循环引用。

self.Block=^{
self.get(self.data);
}

对象中有一个Block属性,但在这个Block属性中又引用的对象的其他成员变量,那么就会对这个成员变量本身产生强引用,就造成你引用我,我也引用你,retain计数一直+1,就成了循环引用了。在ARC下改成

        __weak typeof(self) *weakself = self;
self.Block=^{
weakself.get(weak
self.data);
}

非ARC下

        __block
UIViewController *weakself =
self;

self.Block=^{
weakself.get(weak
self.data);
}


在MRC中__block variable在block中使用是不会retain的 
但是ARC中__block会Retain的。 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: