iOS开发之ARC MRC混编
2015-10-13 14:09
344 查看
标签:
Xcode5之后,新建iOS工程,默认都是ARC模式,但是有时候我们的项目中需要用到一些第三方框架,我们下载下来却发现是非ARC的,这时候我们需要进行ARC和MRC混编。
第一种方式,Edit->Refactor,转换成ARC方式
![](http://images.cnitblog.com/blog/559755/201502/111658464334456.png)
著名的iOS网络框架ASIHTTPRequest就是MRC,我们试试能不能转换成ARC
![](http://images.cnitblog.com/blog/559755/201502/111709097617392.png)
点击Check,我们发现悲剧了
![](http://images.cnitblog.com/blog/559755/201502/111711497929600.png)
多数情况下这种方式都会出错,那该怎么办呢?
第二种方式,给编译器加标记
![](http://images.cnitblog.com/blog/559755/201502/111715337611278.png)
可以在Build Phases中的Compile Sources中加入编译标记-fno-objc-arc,确实可行,但是文件好多,这种方式适合文件比较少的情况,文件多了难道我们要一个一个加嘛,这时候我们可以借助一个工具xproj,这是一个脚本,可以很方便的给某个文件夹内的文件添加编译标记,具体使用方法我们看项目主页就行了,既可以给ARC项目添加MRC标记(-fno-objc-arc),也可以给MRC项目添加ARC标记(-fobjc-arc)
第三种方式,打包成静态库
![](http://images.cnitblog.com/blog/559755/201502/111728542452225.png)
将我们将要使用的类拖入工程当中
![](http://images.cnitblog.com/blog/559755/201502/111734414012966.png)
勾选正确的target
![](http://images.cnitblog.com/blog/559755/201502/111736325421813.png)
将原来的类文件删除,只留我们需要的,然后我们将整个项目变为MRC
![](http://images.cnitblog.com/blog/559755/201502/111741138086118.png)
添加头文件
![](http://images.cnitblog.com/blog/559755/201502/111749166985758.png)
![](http://images.cnitblog.com/blog/559755/201502/111752008236250.png)
设置公共头文件
![](http://images.cnitblog.com/blog/559755/201502/111753516985411.png)
运行程序,我们发现静态库已经产生
![](http://images.cnitblog.com/blog/559755/201502/111758407925625.png)
这种方式的缺点就是如果需要改源码,就需要重新打包
最后一种方式,项目引用
新建一个项目,改为非ARC,在另一个项目中引用这个项目
![](http://images.cnitblog.com/blog/559755/201502/111809338234953.png)
我们需要把项目B中的无关文件删除掉
最后一种方式,自己重写成ARC方式
Xcode5之后,新建iOS工程,默认都是ARC模式,但是有时候我们的项目中需要用到一些第三方框架,我们下载下来却发现是非ARC的,这时候我们需要进行ARC和MRC混编。
第一种方式,Edit->Refactor,转换成ARC方式
![](http://images.cnitblog.com/blog/559755/201502/111658464334456.png)
著名的iOS网络框架ASIHTTPRequest就是MRC,我们试试能不能转换成ARC
![](http://images.cnitblog.com/blog/559755/201502/111709097617392.png)
点击Check,我们发现悲剧了
![](http://images.cnitblog.com/blog/559755/201502/111711497929600.png)
多数情况下这种方式都会出错,那该怎么办呢?
第二种方式,给编译器加标记
![](http://images.cnitblog.com/blog/559755/201502/111715337611278.png)
可以在Build Phases中的Compile Sources中加入编译标记-fno-objc-arc,确实可行,但是文件好多,这种方式适合文件比较少的情况,文件多了难道我们要一个一个加嘛,这时候我们可以借助一个工具xproj,这是一个脚本,可以很方便的给某个文件夹内的文件添加编译标记,具体使用方法我们看项目主页就行了,既可以给ARC项目添加MRC标记(-fno-objc-arc),也可以给MRC项目添加ARC标记(-fobjc-arc)
第三种方式,打包成静态库
![](http://images.cnitblog.com/blog/559755/201502/111728542452225.png)
将我们将要使用的类拖入工程当中
![](http://images.cnitblog.com/blog/559755/201502/111734414012966.png)
勾选正确的target
![](http://images.cnitblog.com/blog/559755/201502/111736325421813.png)
将原来的类文件删除,只留我们需要的,然后我们将整个项目变为MRC
![](http://images.cnitblog.com/blog/559755/201502/111741138086118.png)
添加头文件
![](http://images.cnitblog.com/blog/559755/201502/111749166985758.png)
![](http://images.cnitblog.com/blog/559755/201502/111752008236250.png)
设置公共头文件
![](http://images.cnitblog.com/blog/559755/201502/111753516985411.png)
运行程序,我们发现静态库已经产生
![](http://images.cnitblog.com/blog/559755/201502/111758407925625.png)
这种方式的缺点就是如果需要改源码,就需要重新打包
最后一种方式,项目引用
新建一个项目,改为非ARC,在另一个项目中引用这个项目
![](http://images.cnitblog.com/blog/559755/201502/111809338234953.png)
我们需要把项目B中的无关文件删除掉
最后一种方式,自己重写成ARC方式
相关文章推荐
- nagios no running,求助各位大神,谢谢。
- 隐藏状态栏--iOS开发
- ios获取设备唯一标志的解决方案
- #蓝懿ios学习的日子#2015年 10月13日
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- iOS关于alloc init于new的区别
- iOS 关于presentViewController弹出页面反应迟钝的问题
- IOS 播放视频
- iOS开发日记34-国际化
- 关闭ios虚拟键盘的几种方法
- 关于iOS证书申请及安装流程
- iOS多线程GCD(转)
- iOS开发者证书疑问
- iOS--字符转换
- iOS 图片下载封装 ImageDownloader
- ios自定义导航栏navigationbar的颜色或者图片
- iOS自带同步POST请求
- IOS开发者常用的12个Xcode插件
- iOS:Xcode 6以后如何创建预编译文件(pch)
- Block - 1