现在遇到的情况是,由于要复用以前的非ARC工程代码,所以手动建立的工程都是关闭了ARC功能,但是用很多其他的开源组建的时候,又是ARC(较新的工程),所以需要将两者混合编译。
关于设置ARC和非ARC标志。
Click the Project -> Build Phases Tab -> Compile Sources Section -> Double Click on the file name
假如是ARC工程使用非ARC .m文件,在双击的弹出框中输入 -fno-objc-arc (重点词是 no)
假如在非ARC工程中哦给你使用 ARC .m文件,在双击的弹出框中输入 -fobjc-arc.
为了确保在编译的时候,添加的 标志被正确的添加,可以在对应的 .m文件的开头添加 __has_feature 来判断是不是抛出异常。
如需要ARC的文件中:
<code style="margin: 0px; padding: 0px; border: 0px; font-size: 1em; font-family: 'andale mono', 'lucida console', monospace; vertical-align: baseline; line-height: 1.5;"><span class="com" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(142, 144, 140);">#if ! __has_feature(objc_arc)</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> </span><span class="com" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(142, 144, 140);">#error</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> </span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(66, 113, 174);">This</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> file must be compiled </span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(113, 140, 0);">with</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> ARC</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> </span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(66, 113, 174);">Either</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> turn on ARC </span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(113, 140, 0);">for</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> the project </span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(113, 140, 0);">or</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> </span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(113, 140, 0);">use</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> </span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">-</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">fobjc</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">-</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">arc flag </span><span class="com" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(142, 144, 140);">#endif</span></code>如不需要ARC文件中:
<code style="margin: 0px; padding: 0px; border: 0px; font-size: 1em; font-family: 'andale mono', 'lucida console', monospace; vertical-align: baseline; line-height: 1.5;"><span class="com" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(142, 144, 140);">#if __has_feature(objc_arc)</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> </span><span class="com" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(142, 144, 140);">#error</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> </span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(66, 113, 174);">This</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> file cannot be compiled </span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(113, 140, 0);">with</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> ARC</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> </span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(66, 113, 174);">Either</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> turn off ARC </span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(113, 140, 0);">for</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> the project </span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(113, 140, 0);">or</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> </span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(113, 140, 0);">use</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;"> </span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">-</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">fno</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">-</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">objc</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">-</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">arc flag </span><span class="com" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(142, 144, 140);">#endif</span></code>APPLE 给我的感觉还是推荐使用ARC,以后的文件中越来越多使用ARC(从开源的有名的工程都是使用ARC建立),所以建议大家以后建立工程都是使用ARC。
本文直接使用 http://www.codeography.com/2011/10/10/making-arc-and-non-arc-play-nice.html .
属于自己的第一个工程已经上线,到目前为止已经有3个项目了,下一步谈谈申请 APPLE 开发者账号等相关事情(现在APPLE开发申请真是快很多很多了,感觉很容易,而且不懂直接找开发客户)。