如何在ARC項目中使用非ARC的開源框架

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

http://twitter.com/sharexcode

 看本文的標題,相信許多開發者都知道它應該是關於本站的另外一教程ARCtutorial and guide page的一個補充。網絡

曾經有許多人來問關於一些開源框架(本站中介紹過)的問題,使人吃驚的是,他們居然不知道在ARC項目中使用 -fno-objc-arc  標誌以禁用ARC。框架

若是你也使用到這個網站中的開源框架,而且遇到了一樣的問題,那麼本文將介紹如何讓非ARC的庫工做在ARC項目中。ide

一般有兩種須要將「ARC」代碼和「非ARC」代碼混用的狀況,咱們分別介紹如何在Xcode4中解決它們。網站

場景 1你有一個非ARC的項目,你想將它重構爲ARC項目(使用Xcode的重構功能refactoring),但其中一些代碼你不想重構。ui

要想解決這個問題,在你重構時,反選那些你不想重構的文件便可,Xcode會自動在這些文件上添加-fno-objc-arc 標誌。spa

1.選擇Edit->Refactor->Convert to Objective-C ARC 菜單。
2. 在「Select Targets To Convert 」界面,選擇target,點擊目標名旁邊的小箭頭,以展開文件列表。code

3.選擇全部不想重構的文件,右鍵(ctrl+左鍵),選擇「uncheck-all」,而後進行重構。orm

正如我在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 。

相關文章
相關標籤/搜索