ARC、MRC混编

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

第一种方式:

Edit->Refactor,转换成ARC方式

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

点击Check,我们发现悲剧了

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

第二种方式:

给编译器加标记

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

第三种方式:

打包成静态库

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

勾选正确的target

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

添加头文件

设置公共头文件

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

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

最后一种方式,项目引用

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

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

最后一种方式

自己重写成ARC方式

时间: 2024-12-12 02:53:36

ARC、MRC混编的相关文章

iOS开发之ARC MRC混编

Xcode5之后,新建iOS工程,默认都是ARC模式,但是有时候我们的项目中需要用到一些第三方框架,我们下载下来却发现是非ARC的,这时候我们需要进行ARC和MRC混编. 第一种方式,Edit->Refactor,转换成ARC方式 著名的iOS网络框架ASIHTTPRequest就是MRC,我们试试能不能转换成ARC 点击Check,我们发现悲剧了 多数情况下这种方式都会出错,那该怎么办呢? 第二种方式,给编译器加标记 可以在Build Phases中的Compile Sources中加入编译标

ARC MRC 混编

简单叙述一下吧.MRC模式 就是带有retain,release和autorelease方法操作的技术引用,计数器为0的时候就会自动释放内存.在ARC模式下对象不能调用release,retain和retainCount方法,允许重写dealloc但不能[super dealloc]:1:如果没有强指针指向对象,该对象就会被销毁,换种说法说,如果一开始就是弱指针,没意义,直接被回收:2:指针默认都是强指针的,修饰符为连续两个下横线的__strong;3:assign只适合于基础数据类型:4:弱指

ios-实现ARC与MRC混编

选择target -> build phases -> compile sources -> 用ARC的文件将compiler flags设置为:-fobjc-arc,用MRC的文件将compiler flags设置为:-fno-objc-arc. 同样,如果一个项目用ARC,而某个文件需要用MRC,只需要在compiler sources中将该文件的 compiler flags设置为-fno-objc-arc即可. ios-实现ARC与MRC混编

30-ocARC基本概念ARM和MRC混编

 ARC ARC的原理是什么 当ARC开启时,编译器将自动在代码合适的地方插入retain, release和autorelease,而作为程序猿,完全不需要担心编译器会做错(除非开发者自己错用ARC了). ARC有什么优点 完全消除了手动管理内存的烦琐, 让程序猿更加专注于app的业务 基本上能够避免内存泄露 有时还能更加快速,因为编译器还可以执行某些优化 ARC的原则是什么?什么是强指针?什么是弱指针? 只要还有一个强指针变量指向对象,对象就会保持在内存中 1.强指针 默认所有指针变量都是强

iOS ARC与MRC混编的一些解决方法

1. ARC & MRC 混合开发 在项目开发中,遇到使用MRC开发的第三方库怎么办? 例如:ASI 1> 尝试使用Xcode的转换工具(失败率比较高) 2> 在编译选项中,为MRC的程序添加-fno-objc-arc标记,表明在编译时,该文件使用MRC编译 备注: (1) 演示中使用的RegexKitLite还需要导入libicucore.dylib动态库 (2) 如果要在MRC项目中添加ARC的文件,可以使用 -fobjc-arc 标记即可 3> 将MRC的第三方库直接编译成

ARC和MRC混编

-fno-objc-arc   === 告诉编译器是MRC -f-objc-arc   === 告诉编译器是ARC

iOS ARC和MRC混编

如果一个工程为MRC,其中需要添加ARC的文件: 选择target  ->  build phases  ->  compile sources  ->单击ARC的文件将compile flags设置为: -fobjc - arc 如果一个工程为ARC,其中要添加MRC的文件: 选择target  ->  build phases  ->  compile sources  ->单击MRC的文件将compile flags设置为: - fno -objc -arc

ARC和非ARC文件混编

在编程过程中,我们会用到很多各种各样的他人封装的第三方代码,但是有很多第三方都是在非ARC情况下运行的,当你使用第三方编译时出现和下图类似的错误,就说明该第三方是非ARC的,需要进行一些配置. 解决方法: 苹果文档Transitioning to ARC Release Notes有一种解决办法为: Use Compiler Flags to Enable and Disable ARC You enable ARC using a new -fobjc-arc compiler flag. Y

[ios]如何在ARC代码中混编非ARC代码

参考 :http://blog.sina.com.cn/s/blog_b595ce9e0101nvvn.html “ios中如果arc和非arc文件混编,可以在build parses中指定compile flags,如果arc文件设为"-fobjc-arc",非arc文件设为"-fno-objc-arc"”