原文:http://www.cocoachina.com/bbs/read.php?tid=92507
ARC完全指南
iOS 5最显著的变化就是增加了Automatic Reference Counting(自动引用计数)。ARC是新LLVM 3.0编译器的特性,完全消除了手动内存管理的烦琐。在你的项目中使用ARC是非常简单的,所有的编程都和以前一样,除了你不再调用retain, release, autorelease。启用ARC之后,编译器会自动在适当的地方插入适当的retain, release, autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切。注意ARC是编译器特性,而不是iOS运行时特性(除了weak指针系统),它也不是其它语言中的垃圾收集器。因此ARC和手动内存管理性能是一样的,有些时候还能更加快速,因为编译器还可以执行某些优化。
指针保持对象的生命
ARC的规则非常简单:只要还有一个变量指向对象,对象就会保持在内存中。当指针指向新值,或者指针不再存在时,相关联的对象就会自动释放。这条规则对于实例变量、synthesize属性、本地变量都是适用的。
我们可以按“所有权”(ownership)来考虑ARC对象:
复制代码
|
firstName变量成为NSString对象的指针,也就是拥有者,该对象保存了文本输入框的内容。
一个对象可以有多个拥有者,在上面例子中,UITextField的text属性同样也是这个String对象的拥有者,也就是有两个指针指向同一个对象:
具体内容太多,就不列了,这里列个目录:
ARC完全指南 ................................................................................................................ 3
指针保持对象的生命............................................................................................. 3
Xcode的ARC自动迁移 ......................................................................................... 9
Xcode的自动迁移工具 ................................................................................... 9
转换后的其它问题........................................................................................ 14
禁止某些文件的ARC .................................................................................... 14
ARC自动迁移的常见问题 ............................................................................ 15
属性property ....................................................................................................... 17
IBOutlet .......................................................................................................... 18
readonly property .......................................................................................... 19
autorelease、release、retain调用 ..................................................................... 19
dealloc方法 .......................................................................................................... 20
AutoreleasePool .................................................................................................... 20
Toll-Free Bridging .................................................................................................. 21
Delegate 和 Weak Property ................................................................................ 26
unsafe_unretained ................................................................................................ 27
iOS 4中使用ARC .................................................................................................. 27
ARC高级指南 .............................................................................................................. 28
Blocks与ARC ........................................................................................................ 28
Singleton与ARC ................................................................................................... 34
Autorelease和AutoreleasePool .......................................................................... 40
Cocos2D 和 Box2D .............................................................................................. 45
静态库static library .............................................................................................. 48
最后?................................................................................................................... 49
参考资料............................................................................................................... 49
iOS 5 ARC完全指南.pdf (1297 K) 下载次数:3893
PDF主要整理来自《iOS 5 By Tutorials》一书中ARC两章的笔记,在此感谢作者!
可以肯定地说,ARC必定是Objective-C在iOS平台中的未来,既然如此,咱们还是尽量拥抱它吧。目前处于过渡期,可能很多第三方库还不能完全与ARC兼容,但新项目从一开始就采用ARC,无疑是正确的选择!