『导言』
亲们,可能在开发中遇到变态需求,在ARC或者MRC之间切换?那怎么宏代码
判断当前环境是ARC
还是MRC
?
在Xcode设置MRC与ARC混编?
iOS5.0
以后就开始可以使用ARC
( Automatic Reference Counting:
自动引用计数 )来代替之前的MRC
(Manual Reference Counting
:人工引用计数)。使用ARC会减少很多代码和忘了释放对象的苦恼。但是事情都有两面性。使用了ARC之后如果你想复用以前写过的使用MRC的类, 就会出报错。这时候怎么办?方法比较简单, 只需要做下面的一个步骤就可以解决:
转换 | 设置命令 | 注释 |
---|---|---|
MRC 转ARC
|
-fno-objc-arc |
使原来不支持ARC 的代码,支持ARC
|
ARC 转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 开发中如何用宏判断是ARC环境还是MRC环境?
宏代码:
//条件满足ARC
#if __has_feature(objc_arc)
// 否则执行MAC
NSLog(@"ARC");
#else
NSLog(@"MRC");
# endif