iOS开发如何代码判断ARC还是MRC?宏如何写?如何混编?

『导言』

亲们,可能在开发中遇到变态需求,在ARC或者MRC之间切换?那怎么宏代码判断当前环境是ARC还是MRC

在Xcode设置MRC与ARC混编?

iOS5.0以后就开始可以使用ARCAutomatic Reference Counting:自动引用计数 )来代替之前的MRCManual Reference Counting:人工引用计数)。使用ARC会减少很多代码和忘了释放对象的苦恼。但是事情都有两面性。使用了ARC之后如果你想复用以前写过的使用MRC的类, 就会出报错。这时候怎么办?方法比较简单, 只需要做下面的一个步骤就可以解决:

转换 设置命令 注释
MRCARC -fno-objc-arc 使原来不支持ARC的代码,支持ARC
ARCMRC -fobjc-arc 使原来不支持MRC的代码,支持MRC
ARC工程中也可以使用MRC的类

TargetsBuild phases选项下Compile Sources下选择要不使用arc编译的文件,双击它,输入 -fno-objc-arc 即可

图.ARC转MRC

MRC工程中也可以使用ARC的类。方法如下:

TargetsBuild phases选项下Compile Sources下选择要不使用arc编译的文件,双击它,输入 -fobjc-arc 即可

图.MRC转ARC

iOS 开发中如何用宏判断是ARC环境还是MRC环境?
宏代码:
    //条件满足ARC
#if __has_feature(objc_arc)
//    否则执行MAC
    
    NSLog(@"ARC");
#else 
    NSLog(@"MRC");

# endif

图 .放松时刻.gif
链接:

xcode中arc与非arc之间的转换

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容