ARCatom
ARC 是一种编译器特性!而不是IOS运行时特性,和JAVA中得垃圾回收机制彻底不同指针
ARC是自iOS 5以后增长的新特性,彻底消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你再也不须要担忧内存管理,由于编译器为你处理了一切code
ARC规则:只要还有一个强指针变量指向对象,对象就会保持在内存中对象
弱指针指向的对象被回收后,弱指针会自动变为nil指针,不会引起野指针错误内存
使用注意:编译器
一、不容许调用release、retain、retainCount;内存管理
二、容许重写dello方法,可是重写dello方法中不容许[super delloc];io
三、@property参数:编译
strong :表明建立的 _成员变量 是一个强指针,相似于原来的retain,(适用于OC对象)class
weak :表明建立的 _成员变量 是一个若指针,相似于原来的assgin,(适用于OC对象)
assign :这个适用于非OC对象,好比 int型、long型等等
四、之前的retain要改成strong
五、假如出现循环引用的用法,那么就要一端用strong一端用weak
例如:一条狗有一个主人,一个主人有一条狗!
@interface Dog : NSObject @property (nonatomic,weak) Person *person; // 狗拥有一个主人对象,这个指针是一个弱指针, @end @implementation Dog @end @interface Person : NSObject @property (nonatomic,strong) Dog *dog; // 人拥有一个狗对象,这个指针是一个强指针, @end @implementation Person @end