iOS & ARC

本文深入探讨了Objective-C自动内存管理ARC的工作原理,详细介绍了如何在iOS4和iOS5中启用ARC,包括转换规则、强制规定以及如何在工程中指定不使用ARC的方法。此外,文章还提供了关于工程转换、使用限制和优化技巧的实用指南。
ARC工作原理是在编译程序的时候由xCode将内存操作的代码(如:retain,release 和 autorelease)自动添加到需要的位置。

ARC 只能在iOS4 和iOS5上使用,weak refrences 只能在iOS5上使用,并且只能是工程在ARC管理内存的时候才能用。

老版本的工程是可以转换成使用ARC的工程,转换规则包括:

1.去掉所有的retain,release,autorelease

2.把NSAutoRelease替换成@autoreleasepool{}块

3.把assign的属性变为weak

使用ARC的一些强制规定

1.不能直接调用dealloc方法,不能调用retain,release,autorelease,reraubCount方法,包括@selector(retain)的方式也不行

2.截图租户事故宣布dealloc方法来管理一些资源,但不能用来释放实例变量,也不能在dealloc方法里面去掉[super dealloc]方法,在ARC下父类的dealloc同样由编译器来自动完成

3.Core Foundation类型的对象任然可以用CFRetain,CFRelease这些方法

4.不能在使用NSAllocateObject和NSDeallocateObject对象

5.不能在c结构体中使用对象指针,如果有类似功能可以创建一个Objective-c类来管理这些对象

6.在id和void *之间没有简便的转换方法,同样在Objective-c和core Foundation类型之间的转换都需要使用编译器制定的转换函数

7.不能再使用NSAutoreleasePool对象,ARC提供了@autoreleasepool块来代替它,这样更加有效率

8.不能使用内存存储区(不能再使用NSZone)

9.不能以new为开头给一个属性命名

10.声明outlet时一般应当使用weak,除了对StoryBoard 这样nib中间的顶层对象要用strong

11.weak 相当于老版本的assign,strong相当于retain

对工程中的单个文件制定不使用ARC的方法:在targets的build phases选项下Compile Sources下选择要不使用arc编译的文件,双击它,输入-fno-objc-arc即可


From:http://fei263.blog.163.com/blog/static/927937242011101721610283/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值