黑馬程式設計師————OC記憶體管理_ARC
阿新 • • 發佈:2019-01-26
ARC( Autom Reference Counting) 是一個編譯器特性,會自動檢測幫我們release
一、ARC基本原理
1.編譯器特性
編譯程式碼的過程中會自動檢測哪裡需要插入自動釋放記憶體的程式碼
2.判斷準則 只要沒有強指標指向物件,就會釋放物件
3.ARC特點 1)不允許呼叫release、retain和retaincount 2)允許重寫dealloc,但是不允許呼叫[super dealloc] 3)@property的引數
4.ARC的轉換功能 1)將非ARC——>轉成ARC Edit—>Refactor—>Convert to Object C—>ARC
2)讓部分物件不要ARC的實現方法 Build phases——>雙擊類名——>輸入——>-fno -obj - arc
3)讓部分物件要ARC的實現方法 Build phases——>雙擊類名——>輸入——>-f-obj - arc
// 新建立一個物件,會自動釋放物件
Person *p = [[Person alloc] init];
2.判斷準則 只要沒有強指標指向物件,就會釋放物件
/*
指標分兩種
強指標:預設情況下,所有的指標都是強指標_strong
弱指標:_weak
*/
3.ARC特點 1)不允許呼叫release、retain和retaincount 2)允許重寫dealloc,但是不允許呼叫[super dealloc] 3)@property的引數
4)以前的retain改為用strong/* strong:成員變數是強指標(適用於oc物件) weak:成員變數是弱指標(適用於oc物件型別) assign:適用於非oc物件型別 */
@class Dog;
@interface Person : NSObject
@property (nonatomic,strong) Dog *dog;
@end
4.ARC的轉換功能 1)將非ARC——>轉成ARC Edit—>Refactor—>Convert to Object C—>ARC
2)讓部分物件不要ARC的實現方法 Build phases——>雙擊類名——>輸入——>-fno -obj - arc
3)讓部分物件要ARC的實現方法 Build phases——>雙擊類名——>輸入——>-f-obj - arc