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