Xcode5之后,新建iOS工程,默认都是ARC模式,但是有时候我们的项目中需要用到一些第三方框架,我们下载下来却发现是非ARC的,这时候我们需要进行ARC和MRC混编。

第一种方式,Edit->Refactor,转换成ARC方式

iOS开发之ARC MRC混编

著名的iOS网络框架ASIHTTPRequest就是MRC,我们试试能不能转换成ARC

iOS开发之ARC MRC混编

点击Check,我们发现悲剧了

iOS开发之ARC MRC混编

多数情况下这种方式都会出错,那该怎么办呢?

第二种方式,给编译器加标记

iOS开发之ARC MRC混编

可以在Build Phases中的Compile Sources中加入编译标记-fno-objc-arc,确实可行,但是文件好多,这种方式适合文件比较少的情况,文件多了难道我们要一个一个加嘛,这时候我们可以借助一个工具xproj,这是一个脚本,可以很方便的给某个文件夹内的文件添加编译标记,具体使用方法我们看项目主页就行了,既可以给ARC项目添加MRC标记(-fno-objc-arc),也可以给MRC项目添加ARC标记(-fobjc-arc)

第三种方式,打包成静态库

iOS开发之ARC MRC混编

将我们将要使用的类拖入工程当中

iOS开发之ARC MRC混编

勾选正确的target

iOS开发之ARC MRC混编

将原来的类文件删除,只留我们需要的,然后我们将整个项目变为MRC

iOS开发之ARC MRC混编

添加头文件

iOS开发之ARC MRC混编

iOS开发之ARC MRC混编

设置公共头文件

iOS开发之ARC MRC混编

运行程序,我们发现静态库已经产生

iOS开发之ARC MRC混编

这种方式的缺点就是如果需要改源码,就需要重新打包

最后一种方式,项目引用

新建一个项目,改为非ARC,在另一个项目中引用这个项目

iOS开发之ARC MRC混编

我们需要把项目B中的无关文件删除掉

最后一种方式,自己重写成ARC方式

相关文章: