让项目同时支持ARC和非ARC

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

让项目同时支持ARC和非ARC_第1张图片

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

让项目同时支持ARC和非ARC_第2张图片

3.点击Check,我们发现悲剧了,提示不能转换。多数情况下这种方式都会出错,那该怎么办呢?

让项目同时支持ARC和非ARC_第3张图片

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

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

让项目同时支持ARC和非ARC_第4张图片

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

让项目同时支持ARC和非ARC_第5张图片

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

让项目同时支持ARC和非ARC_第6张图片

7.勾选正确的target。

让项目同时支持ARC和非ARC_第7张图片

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

让项目同时支持ARC和非ARC_第8张图片

9.添加头文件

让项目同时支持ARC和非ARC_第9张图片

10.设置公共头文件

让项目同时支持ARC和非ARC_第10张图片

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

让项目同时支持ARC和非ARC_第11张图片

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

让项目同时支持ARC和非ARC_第12张图片

13.最后一种方式,就是项目引用。新建一个项目,改为非ARC,在另一个项目中引用这个项目,我们需要把项目B中的无关文件删除掉,自己重写成ARC方式。

让项目同时支持ARC和非ARC_第13张图片

你可能感兴趣的:(让项目同时支持ARC和非ARC)