Block的Retain Cycle的解决方法
来源:互联网 发布:暴躁的母亲知乎 编辑:程序博客网 时间:2024/05/17 07:52
一个使用Block语法的实例变量,在引用另一个实例变量的时候,经常会引起retaincycle。这个问题在使用ASIHTTPRequest的block语法的时候会时不时的碰到。这个问题困扰了我这个小白很久。终于有一天,在AdvancedMac OS X Programming上,看到了这个问题的解决方案。
先用代码描述一下症状:
Xcode在编译以上程序的时候会给出一个警告:Captureing ‘self’ strongly in this block islikely to lead to a retain cycle。原因是_items
实际上是self->items
。_block
对象在创建的时候会被retain
一次,因此会导致self
也被retain
一次。这样就形成了一个retaincycle。
解决方法就是,创建一个本地变量blockSelf
,指向self
,然后用结构体语法访问实例变量。代码如下:
这么修改之后,blockSelf
是本地变量,是弱引用,因此在_block
被retain
的时候,并不会增加retaincount,所以retain cycle就解除了,Xcode也不再出现警告了,问题解决。
注:本文并非原创,详情请参阅AdvancedMac OS X Programming,第92页“Block Retain Cycles”。
(全文完)
本文转自:http://cocoa.venj.me/blog/prevent-block-instance-retain-cycle/
0 0
- Block的Retain Cycle的解决方法
- Block的Retain Cycle的解决方法
- 警告:Block的Retain Cycle的解决方法
- 警告:Block的Retain Cycle的解决方法
- Block的Retain Cycle的解决方法
- Block的Retain Cycle的解决方法
- 警告:Block的Retain Cycle的解决方法
- 警告:Block的Retain Cycle的解决方法
- 警告:Block的Retain Cycle的解决方法
- Block的Retain Cycle的解决方法 (dealloc不掉用)
- [ios2]警告:Block的Retain Cycle的解决方法 【转】
- Captureing ‘self’ strongly in this block is likely to lead to a retain cycle Block的Retain Cycle的解决方法
- 喜欢用Block的值得注意-Block的Retain Cycle的解决方法
- retain cycle 与block的正确调用
- 关于block坑爹的retain Cycle
- 解决block的retain cycle的警告问题
- retain cycle 的产生
- IOS内存泄露分析Retain Cycle的解决方法
- GCD的使用(详解)
- 关键帧动画CAKeyframeAnimation
- iOS技巧之获取本机通讯录中的内容…
- ios视频
- 使用Cocoapods下载DKNightVersion运行时路径错误
- Block的Retain Cycle的解决方法
- UIImageJPEGRepresentation和UIIma…
- 调用已经废弃的API消除警告
- Python GUI - Tkinter LabelFrame
- iOS关于extern、static、const的区…
- 【iOS开发】iCloud开发&nbsp…
- 开源网络库 GCDAsyncSocket 笔记
- 零基础如何学爬虫技术
- 【iOS开发】获取图片某点或…