標籤:objective-c xcode ios 類 對象 物件導向
ARC:Auto Reference Counting 自動引用計數
是一種編譯器機制,在編譯過程中,為我們的代碼添加retain、release、autorelease等方法
在iOS7.0之後強制使用,使程式員不用再關心記憶體管理,要求:
1)不能使用retain release等操作引用計數的方法
2)不可以使用autorelease方法,但能夠使用自動釋放池
3)重寫dealloc方法中不能再使用[super dealloc]
判斷準則:
只要沒有強指標指向對象,就會釋放對象
強指標:__strong (預設)
弱指標:__weak
不要出現這樣的代碼:
__weak Person *p = [[Person alloc] init];
ARC機制下不允許調用方法autorelease,但並沒有捨棄@autoreleasepool
ARC僅僅是在編譯時間協助你加入retain/release/autorelease的代碼調用。
所以,ARC之下使用@autoreleasepool依然有效,保證池子中的對象延遲釋放。
@property的記憶體管理參數strong表示強指標屬性,weak表示弱指標參數。
簡單記憶:屬性為OC對象時
使用strong代替retain
使用weak代替assign。使用weak參數解決循環參考問題
MRC:
retain:release屬性舊值,retain屬性新值
assign:直接賦值,不改變引用計數 (預設)
一般用於非OC對象,以及不佔有對象的情況下
copy:release舊值,copy新值,一般用於NSString
ARC:
strong:強指標,相當於retain,用於對象
weak:弱指標,用於對象
assign:用於非OC對象
copy:用於NSString
將MRC項目修改為ARC:
Xcode edit-》refactor—》Convert to OC ARC
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/7C/7D/wKioL1bRlSDRzYk-AAKtJ_B3ndw904.png" title="螢幕快照 2016-02-27 下午8.20.22.png" width="601" height="364" border="0" hspace="0" vspace="0" style="width:601px;height:364px;" alt="wKioL1bRlSDRzYk-AAKtJ_B3ndw904.png" />
讓ARC項目中的某些.m檔案不使用ARC
項目配置中—》Build Phases—》Compile Sources中
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/7C/7F/wKiom1bRlRvxb9p2AAKIAaRkTDI910.png" title="螢幕快照 2016-02-27 下午8.22.17.png" width="600" height="270" border="0" hspace="0" vspace="0" style="width:600px;height:270px;" alt="wKiom1bRlRvxb9p2AAKIAaRkTDI910.png" />
為指定的.m檔案設定Compiler Flags:-fno-objc-arc
讓非ARC項目中的某些.m檔案使用ARC:
Compiler Flags:-f-objc-arc
本文出自 “teacherAn” 部落格,請務必保留此出處http://annmeng.blog.51cto.com/3321237/1745690
Objective-C(9)記憶體管理之ARC