『導(dǎo)言』
親們啤月,可能在開發(fā)中遇到變態(tài)需求,在ARC或者M(jìn)RC之間切換?那怎么宏代碼
判斷當(dāng)前環(huán)境是ARC
還是MRC
劳跃?
在Xcode設(shè)置MRC與ARC混編谎仲?
iOS5.0
以后就開始可以使用ARC
( Automatic Reference Counting:
自動引用計數(shù) )來代替之前的MRC
(Manual Reference Counting
:人工引用計數(shù))。使用ARC會減少很多代碼和忘了釋放對象的苦惱刨仑。但是事情都有兩面性郑诺。使用了ARC之后如果你想復(fù)用以前寫過的使用MRC的類, 就會出報錯杉武。這時候怎么辦辙诞?方法比較簡單, 只需要做下面的一個步驟就可以解決:
轉(zhuǎn)換 | 設(shè)置命令 | 注釋 |
---|---|---|
MRC 轉(zhuǎn)ARC
|
-fno-objc-arc |
使原來不支持ARC 的代碼轻抱,支持ARC
|
ARC 轉(zhuǎn)MRC
|
-fobjc-arc |
使原來不支持MRC 的代碼倘要,支持MRC
|
ARC工程中也可以使用MRC的類
在Targets
的Build phases
選項下Compile Sources
下選擇要不使用arc
編譯的文件,雙擊它十拣,輸入 -fno-objc-arc
即可
MRC工程中也可以使用ARC的類。方法如下:
在Targets
的Build phases
選項下Compile Sources
下選擇要不使用arc
編譯的文件,雙擊它志鹃,輸入 -fobjc-arc
即可
iOS 開發(fā)中如何用宏判斷是ARC環(huán)境還是MRC環(huán)境夭问?
宏代碼:
//條件滿足ARC
#if __has_feature(objc_arc)
// 否則執(zhí)行MAC
NSLog(@"ARC");
#else
NSLog(@"MRC");
# endif