如何在ARC项目中使用非ARC的开源框架
2015-07-22 20:32
666 查看
原文地址: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 。
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 。
相关文章推荐
- 【iOS开发之Objective-C】书签管理器项目
- JVM工作原理小记
- 无线网络安全
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1
- myeclipse里面新建java程序运行时总会出现无法找到主函数问题
- 【转载】单调队列学习
- POJ 1847 Tram
- struts2与JasperReport整合应用中解决PDF中文不显示问题(让我烦恼了半天)
- 关于自定义函数导致SQL查询过慢的解决方案
- Adapter.notifyDataSetChanged()源码分析以及与ListView.setAdapter的区别
- 导入maven项目pom.xml文件报错
- 天天飞车国际化方案
- HDU 5289 单调队列,multiset
- BroadcastReceiver注册、使用及其权限
- 如何为Eclipse设置代理
- 下载adt-bundle-linux-x86_64-20140702.zip 和 android sdk
- hdu 1875 畅通工程再续(kruskal算法计算最小生成树)
- pat 1040. Longest Symmetric String (25)
- git-学习笔记8 git stash
- #定位系统性能瓶颈# sysdig