关于ARC的一些说明
来源:互联网 发布:工程进度控制软件 编辑:程序博客网 时间:2024/05/09 03:11
文章开头不废话去说明关于ARC的说明,简单记录一下在使用过程中的一下需要注意的点。
1,变量的属性
在ARC的环境下,建议使用strong替代retian,由于没有很好的实例去展示它们的区别,所以也说不出个所以然。习惯比较好的写法是,关于retain全部替换为strong,关于assign如果是object则使用weak替换如果是基本数据类型,或者C的类型,则继续沿用assign。 copy不变,nsstring依旧习惯使用copy
2,关于block
block语法越来越多的被大家运用到,最简单一点它可以大量减少我们的编码量。由于block的本质是函数指针,虽然强大的clang库很好去支持了该语法,但是在内存处理方面,我们还是面临了许多表面上看不到的问题,不详细说明block语法。简单说说在ARC中使用block需要注意的一些问题。
大家都知道很多时候为了防止循环引用,我们会使用修饰符__block去解决循环retain的问题,类似__block typeof(self) b_self = self这样的写法来指定这个b_self是一个弱引用,但是__block在ARC和非ARC中有一些差别:在ARC中使用__block无法解除循环retain,在ARC的环境下,需要使用修饰符__weak。如果是在iOS5以下,则没有__weak,我们可以使用__unsafe_unretained。
同样,在ARC的环境下,如果在block中访问当前的类的成员变量,依旧会引起循环retain,所以需要注意这个问题。
3,有关CFObject对象
在ARC的环境下 CFObject和NSObject需要转换,
由于ARC不能管理Core Foundation Object的生命周期,所以在Core Foundation和ARC之间,我们需要使用到__bridge,__bridge_retained和__bridge_transfer三个转换关键字。
__bridge只做类型转换,但是不修改对象(内存)管理权;
__bridge_retained(也可以使用CFBridgingRetain)将Objective-C的对象转换为Core Foundation的对象,同时将对象(内存)的管理权交给我们,后续需要使用CFRelease或者相关方法来释放对象;
__bridge_transfer(也可以使用CFBridgingRelease)将Core Foundation的对象转换为Objective-C的对象,同时将对象(内存)的管理权交给ARC。
- 关于ARC的一些说明
- 关于ARC的一些说法
- 黑马程序员--关于ARC的说明
- 转向arc的说明
- 转向ARC的说明
- 转向ARC的说明
- 关于smarty3的一些说明
- 关于smarty3的一些说明
- 关于WirelessKey的一些说明
- 关于Mplayer的一些说明
- 关于宏的一些说明
- 关于adaboost的一些说明
- 关于就业的一些说明
- 关于adaboost的一些说明
- 关于RotateRect的一些说明
- 关于 _cplusplus 的一些说明
- RFC34 关于ARC时钟的一些初步记录摘要
- 关于ARC需要了解的一些基本知识点
- HDU 4499 Cannon (状态)
- 支持联系人名字模糊搜索和号码搜索等功能源码
- Qt国际化
- 冷静的思考和快乐的吐槽——《黑客与画家》
- zTree(二)
- 关于ARC的一些说明
- 123D Creature帮你创建意想中的怪物
- spring 国际化
- 区域合并
- 坐看桃花谢,静等彼岸花
- 卸载Xcode插件
- 利用nginx搭建http和rtmp协议的流媒体服务器
- IOS 7过渡之---支持IOS 6
- ORA-01466: unable to read data - table definition has changed