ARC 自动引用计数
•ARC自动引用计数(automatic reference counting),提供自动管理内存的功能
•不需要手动管理引用计数,不需要也不允许retain、release、autorelease。
•注意版本是支持iOS4(不支持弱引用)、iOS5以上
•ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切
基本原理
•1 规则
•ARC 的规则非常简单:只要还有一个强指针变量指向对象,对象就会保持在内存中
2 强指针和弱指针
•默认所有实例变量和局部变量都是Strong指针
•弱指针指向的对象被回收后,弱指针会自动变为nil指针,不会引发野指针错误
使用注意
•不能调用release、retain、autorelease、retainCount
•可以重写dealloc,但是不能调用[super dealloc]
•@property : 想长期拥有某个对象,应该用strong,其他对象用weak
•其他基本数据类型依然用assign
•两端互相引用时,一端用strong、一端用weak
ARC和非ARC的混合编译
•不同于XCode4可以在创建工程时选择关闭ARC,XCode5以后在创建的工程是默认开启ARC,没有可以关闭ARC的选项。
•如果需要对特定文件开启或关闭ARC,可以在工程选项中选择Targets -> Compile Phases -> Compile Sources,在里面找到对应文件,添加flag:
•打开ARC:-fobjc-arc
•关闭ARC:-fno-objc-arc
ARC下的属性关键字