arc项目中使用不支持arc的依赖库时编译错误的解决
2014-01-17 11:09
323 查看
ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。
该机能在 iOS 5/ Mac OS X 10.7 开始导入, Xcode4.2 以上版本可以使用该机能。简单地理解ARC,就是通过指定的语法,让编译器(LLVM 3.0)在编译代码时,自动生成实例的引用计数管理部分代码。有一点,ARC并不是GC,它只是一种代码静态分析(Static Analyzer)工具。
【问题】
在项目开发过程中我们通常会用到第三方提供的源代码,麻烦的是有些开源项目用的是 ARC,有的用的是非 ARC。
我在使用 SBJSON 做数据解析遇到问题,最终发现该项目使用的是 非ARC 模式,而我的工程使用的是 ARC 模式。
怎么办呢?
【解决方案】
Xcode 项目中我们可以使用 ARC 和非 ARC 的混合模式。
如果你的项目使用的是 ARC 模式,则为非 ARC 模式的代码文件加入 -fno-objc-arc 标签。
如果你的项目使用的非 ARC 模式,则为 ARC 模式的代码文件加入 -fobjc-arc 标签。
添加标签的方法:
在Target->build phases->Compile Source中设置不支持arc的代码的Compile flag为 -fno-objc-arc/-fobjc-arc
,点击 done 或 Enter保存
该机能在 iOS 5/ Mac OS X 10.7 开始导入, Xcode4.2 以上版本可以使用该机能。简单地理解ARC,就是通过指定的语法,让编译器(LLVM 3.0)在编译代码时,自动生成实例的引用计数管理部分代码。有一点,ARC并不是GC,它只是一种代码静态分析(Static Analyzer)工具。
【问题】
在项目开发过程中我们通常会用到第三方提供的源代码,麻烦的是有些开源项目用的是 ARC,有的用的是非 ARC。
我在使用 SBJSON 做数据解析遇到问题,最终发现该项目使用的是 非ARC 模式,而我的工程使用的是 ARC 模式。
怎么办呢?
【解决方案】
Xcode 项目中我们可以使用 ARC 和非 ARC 的混合模式。
如果你的项目使用的是 ARC 模式,则为非 ARC 模式的代码文件加入 -fno-objc-arc 标签。
如果你的项目使用的非 ARC 模式,则为 ARC 模式的代码文件加入 -fobjc-arc 标签。
添加标签的方法:
在Target->build phases->Compile Source中设置不支持arc的代码的Compile flag为 -fno-objc-arc/-fobjc-arc
,点击 done 或 Enter保存
相关文章推荐
- 在项目中使用libcurl,解决编译链接错误
- VS2013中编译项目在静态库中使用MFC出现错误的解决方法
- 下载使用CocoaPods的开源项目时,编译出现错误解决方法
- [Boost]_[使用预编译头文件解决引用boost后项目编译很慢的问题]
- 《Maven-编译错误解决》---请使用 -Xlint:unchecked 重新编译
- 解决使用Maven项目,无法正确编译的问题
- Java8系列(错误解决)--maven编译时"-source 1.5 中不支持 lambda 表达式"问题的解决
- VS中使用CXTPDockingPane出现的编译错误 error C2059: syntax error : 'constant' 解决
- 解决eclipse项目编译不成功-循环依赖的问题
- 使用ACE5.6过程中编译错误的三种解决方法
- 使用Android Studio运行项目出现 UnsupportedMethodException 错误的解决办法
- 开源的项目xlistctrl编译时出现错误:“找不到uxtheme.h文件”的解决办法
- 使用Maven开发编译Java项目时如何将所有依赖jar包都打入war包
- activex控件中使用directshow,编译时link错误的解决方法
- 使用VIM开发软件项目 - (16) vim编译中遇到的问题及解决方法
- Android Studio把Eclipse android项目当作依赖库lib来使用的一些问题解决
- 使用Tortoise SVN版本控制Eclipse工作区的Android项目时,bin编译错误
- VS2015无法新建项目错误及解决方法:无法打开“……/VC?VCWizards/default.vcxproj”因为此版本的应用程序不支持其项目类型(.vcxproj)
- maven 编译报依赖错误的问题及解决方法
- ubuntu下使用Qt 编译时cannot find -lGL错误解决