Block的循环引用问题
来源:互联网 发布:手机笑声音效软件 编辑:程序博客网 时间:2024/05/16 08:18
摘自:http://blog.csdn.net/wildfireli/article/details/22063001
Block中的循环引用问题
扯了这么多,回到Block的循环引用问题,由于我们很多行为会导致Block的copy,而当Block被copy时,会对block中用到的对象产生强引用(ARC下)或者引用计数加一(non-ARC下)。
如果遇到这种情况:
对象有一个Block属性,然而这个Block属性中又引用了对象的其他成员变量,那么就会对这个变量本身产生强应用,那么变量本身和他自己的Block属性就形成了循环引用。在ARC下需要修改成这样:
也就是生成一个对自身对象的弱引用,如果是倒霉催的项目还需要支持iOS4.3,就用__unsafe_unretained替代__weak。如果是non-ARC环境下就将__weak替换为__block即可。non-ARC情况下,__block变量的含义是在Block中引入一个新的结构体成员变量指向这个__block变量,那么__block typeof(self) weakSelf = self;
就表示Block别再对self对象retain啦,这就打破了循环引用。
0 0
- block 循环引用的问题
- Block的循环引用问题
- Block的循环引用问题
- block的循环引用问题
- Block的循环引用问题
- Block的引用循环问题
- block循环引用的问题
- block循环引用问题
- block循环引用问题
- block循环引用问题
- Block循环引用问题
- block循环引用问题
- Block循环引用问题
- block的循环引用的问题
- block 中循环引用的问题
- 如何解决block 循环引用的问题
- 36.block循环引用的问题
- iOS Block的循环引用问题
- hibernate异常:解决Hibernate的Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL):
- 百度地图getAddrStr()方法返回为空的问题
- uva 11077 - Find the Permutations(置换+dp)
- 美元兑人民币汇率对黄金价格的预测
- 求循环素数
- Block的循环引用问题
- Android导航菜单横向左右滑动并和上方的控件实现联动
- 没有iptables文件的情况,防火墙开启3306端口
- Python heapq模块
- Linux编写Shell脚本自动同步svn并发布maven项目-SSH连接远程服务
- 面向对象与面向过程区别
- #pragma arm section
- MongoDB分片实战
- SPL学习笔记之二:迭代器