ARC

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下的属性关键字

 
原文地址:https://www.cnblogs.com/chenzq12/p/6214646.html