Captureing ‘self’ strongly in this block is likely to lead to a retain cycle Block的Retain Cycle的解决方法
来源:互联网 发布:破解无线网络密码软件 编辑:程序博客网 时间:2024/05/18 00:20
一个使用Block语法的实例变量,在引用另一个实例变量的时候,经常会引起retain cycle。这个问题在使用ASIHTTPRequest的block语法的时候会时不时的碰到。这个问题困扰了我这个小白很久。终于有一天,在Advanced Mac OS X Programming上,看到了这个问题的解决方案。
先用代码描述一下症状:
Xcode在编译以上程序的时候会给出一个警告:Captureing ‘self’ strongly in this block is likely to lead to a retain cycle。原因是_items
实际上是self->items
。_block
对象在创建的时候会被retain
一次,因此会导致self
也被retain
一次。这样就形成了一个retain cycle。
解决方法就是,创建一个本地变量blockSelf
,指向self
,然后用结构体语法访问实例变量。代码如下:
这么修改之后,blockSelf
是本地变量,是弱引用,因此在_block
被retain
的时候,并不会增加retain count,所以retain cycle就解除了,Xcode也不再出现警告了,问题解决。
注:本文并非原创,详情请参阅Advanced Mac OS X Programming,第92页“Block Retain Cycles”。
(全文完)
- Captureing ‘self’ strongly in this block is likely to lead to a retain cycle Block的Retain Cycle的解决方法
- Captureing ‘self’ strongly in this block is likely to lead to a retain cycle 的 警告
- Capturing self strongly in this block is likely to lead to retain cycle的问题
- Capturing 'self' strongly in this block is likely to lead to a retain cycle
- capturing self strongly in this block is likely to lead to a retain cycle
- Capturing self strongly in this block is likely to lead to a retain cycle
- Capturing 'self' strongly in this block is likely to lead to a retain cycle
- Capturing 'self' strongly in this block is likely to lead to a retain cycle
- Capturing 'self' strongly in this block is likely to lead to a retain cycle [duplicate]
- Capturing 'self' strongly in this block is likely to lead to a retain cycle
- capturing self strongly in this block is likely to lead to a retain cycle
- Capturing 'self' strongly in this block is likely to lead to a retain cycle
- Capturing 'self' strongly in this block is likely to lead to a retain cycle [duplicate]
- AVPlayer 监听播放时长错误capturing 'self' strongly in this block is likely to lead to a retain cycle 的解决方法
- Capturing 'self' strongly in this block is likely to lead to retain cycle 解决方案
- Capturing self strongly in this block is likely to lead to retain cycle解决方案
- Capturing self strongly in this block is likely to lead to retain cycle
- iOS之Block报错:capturing self strongly in this block is likely to lead to a retain cycle
- 魔兽哈希算法封装和测试
- Django框架(一): 安装部署
- 技术人员创业后就不再适合继续编码了?
- MYSQL分页limit速度太慢
- DB2存储过程总结
- Captureing ‘self’ strongly in this block is likely to lead to a retain cycle Block的Retain Cycle的解决方法
- 给自卑的自己一点建议
- 关于运算符重载(泪奔)
- Android的USB打印机部署
- LFS
- oracle 函数
- 触须测试程序
- ubuntu android 真机调试配置
- 【Android游戏开发之四】基础的Android 游戏框架(一个游戏角色在屏幕行走的demo)