2012-01-01 62 views
2

問題:我使用的庫不支持ARC(自動引用計數)。定製的xcode模板能夠部分和有選擇地啓用ARC(自動引用計數)嗎?

背景(對於那些不熟悉的ARC):http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html

手動解決方案:添加庫中的每一個執行文件中的-fno-objc-arc選項,否則使用ARC通常在我的應用程序代碼。

觀察:以下模板文件可以被複制和最有可能被用於或者打開ARC完全ON或OFF(不添加編譯器標誌以上 - 的在其之間的解決方案,我需要):

「 /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS Reference Counting.xctemplate「

問題重述:有沒有辦法避免手動解決方案? (在-fno-objc-arc選項中複製並粘貼超過100次不方便,我希望Apple公開一個編程解決方案,我不想使用Automator.app來進行復制/粘貼,因爲Xcode UI很可能會改變。)

例Xcode4模板發生器:https://github.com/MrGando/Xcode-4-Template-Generator/blob/master/template_generator.py

注template_generator.py具有實驗共用構建設置。我想選擇性地共享(部分共享)設置。另外,最好將main()中的NSAutoreleasePool更改爲@autorelease塊,或者使用宏替換,或者提供第二個main.m文件。

+0

是的,我爲自己的項目繼續使用該解決方案;然而,讓模板嚮導讓編程人員選擇是否啓用ARC,對於「傳統」非ARC代碼以及模板代碼本身中的現有樣板文件最小麻煩是很有用的。 – mda 2012-01-01 14:34:39

+0

你們都發表了很好的評論。在實踐中我發現,由於GCC不支持-fno-objc-arc選項(只有Apple-LLVM/clang編譯器會這樣做),ARC遷移可能會繼續是手動過程,並且模板可能需要一段時間趕上。我已經在多個項目上成功遷移到ARC,並且沒有那麼難。這是在我的Xcode重構工具Wishlist上。除非有人想要添加詳盡的howto,否則較高版主可能會關閉此問題。 – mda 2012-05-13 23:44:50

回答

1

您可以在編譯源列表中選擇多個文件,並通過按Enter> Paste> Enter將-fno-objc-arc標記一次性應用到所有文件。

+0

確實如此,如果任何標誌已經存在,它們將被覆蓋。如果它們完全相同,這很有用。 – mda 2012-01-01 14:39:09

3

不,但是你這樣做很難......簡單地爲這些MRC源創建靜態庫目標(如果尚不存在 - 它是第三方庫),然後設置適當的構建每個目標的設置。然後將庫與最終的可執行文件鏈接起來。

+0

兩個問題: A)每次圖書館改變時(這可能會經常發生),我不需要重新制定靜態目標嗎? B)我還需要爲該目標中的每個文件添加-fno-objc-arc,還是該選項可以應用於所有?引用的轉換到ARC版本註釋沒有提到這種配置;他們只聲明必須爲每個文件分別指定選項。 – mda 2012-01-01 14:29:38

+0

如果您可以提供示例howto/tutorial(或鏈接到一個示例),並且它真正簡化了打開或關閉ARC的過程,我會給您(或第一個回答者:-)答覆的批准符號(!) – mda 2012-01-02 03:12:46

+0

@mda a)您只需將目標配置爲您鏈接到的庫,然後所有使用它的客戶端/應用程序鏈接到該庫。他們會提到同一個目標。沒有重新配置(但有人需要添加所有的資源來編譯)。您使用的庫可能已經提供了此靜態庫/項目,以方便您使用。 b)沒有。您只需爲使用MRC的該庫設置目標級別的標誌。源將繼承這些設置,除非在支配的級別上覆蓋了構建設置,或者如果您已將衝突的標誌傳遞給編譯器。 – justin 2012-01-02 03:33:16

相關問題