原文地址:http://maniacdev.com/2012/01/easily-get-non-arc-enabled-open-source-libraries-working-in-arc-enabled-projects/

http://twitter.com/share

 看本文的标题,相信许多开发者都知道它应该是关于本站的另一教程ARCtutorial and guide page的一个补充。

曾经有许多人来问关于一些开源框架(本站中介绍过)的问题,令人吃惊的是,他们竟然不知道在ARC项目中使用 -fno-objc-arc  标志以禁用ARC。

如果你也使用到这个网站中的开源框架,并且遇到了同样的问题,那么本文将介绍如何让非ARC的库工作在ARC项目中。

通常有两种需要将“ARC”代码和“非ARC”代码混用的情况,我们分别介绍如何在Xcode4中解决它们。

场景 1你有一个非ARC的项目,你想将它重构为ARC项目(使用Xcode的重构功能refactoring),但其中一些代码你不想重构。

要想解决这个问题,在你重构时,反选那些你不想重构的文件即可,Xcode会自动在这些文件上添加-fno-objc-arc 标志。

1.选择Edit->Refactor->Convert to Objective-C ARC 菜单。
2. 在“Select Targets To Convert ”界面,选择target,点击目标名旁边的小箭头,以展开文件列表。

3.选择所有不想重构的文件,右键(ctrl+左键),选择“uncheck-all”,然后进行重构。

正如我在Cocos2D里面所做的,以这种方法很容易就让Cocos2D工作在ARC项目。如下图所示:


场景 2– 你已经有一个ARC项目,想让一些非ARC的代码运行在项目中,或者你想自己重构项目但带有部分非ARC代码。

答案在网络上随处可见。你会问在哪里添加“-fno-objc-arc ”标志?让我来告诉你。

1.打开target的“build phases ”窗口。
2. 将某个.m 文件(你不想ARC的)的compilerflags标志修改为 -fno-obj-arc (点击该文件旁边的compilerflags 栏,然后输入-fno-objc-arc)。这个标志将显示在文件右边,如下图所示:

这样,译器就会知道凡是带有这个标志的文件都不需要ARC。

结论

我不能保证这种方法万无一失,比如某些库(比如带有嵌套项目的库)可能会不正常,但我认为这是很容易实践的一种方法——最近几个月以来本网站上提到的所有比较新的开源库都能在这种方式下工作。

如果你在用-fno-objc-arc标志以框架方式链接这些库时出现问题,请参考这里:templatethat allows you to create universal frameworks easily 。

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐