ARC于非ARC 混合编译

              现在遇到的情况是,由于要复用以前的非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开发申请真是快很多很多了,感觉很容易,而且不懂直接找开发客户)。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值