我已經下載了iOS 5 SDK,發現ARC是新Apple編譯器的一大特性。目前,許多第三方框架不支持ARC。我是否可以將ARC用於新代碼並保持當前的保留/發佈代碼不變? ARC轉換器在此不起作用,因爲某些框架(如JSONKit)無法通過轉換器轉換爲ARC。爲某些文件禁用自動引用計數
編輯:
答案是添加-fno-objc-arc
到編譯器標誌你不想ARC的文件。在Xcode 4中,您可以在您的目標 - > Build Phases - > Compile Sources下執行此操作。
我已經下載了iOS 5 SDK,發現ARC是新Apple編譯器的一大特性。目前,許多第三方框架不支持ARC。我是否可以將ARC用於新代碼並保持當前的保留/發佈代碼不變? ARC轉換器在此不起作用,因爲某些框架(如JSONKit)無法通過轉換器轉換爲ARC。爲某些文件禁用自動引用計數
編輯:
答案是添加-fno-objc-arc
到編譯器標誌你不想ARC的文件。在Xcode 4中,您可以在您的目標 - > Build Phases - > Compile Sources下執行此操作。
The public ARC docs雖然沒有直接清楚這一點,但似乎表明,只要每個類都是ARC或全部手動管理,這些類可以集成到一個程序中。
你只能在一個類中混合使用ARC和非ARC;該文件說,通過任何方式(包括定時器和延遲執行,使用@selector
)在ARC代碼中禁止發送retain
,release
,autorelease
或retainCount
消息。所以你不能在ARC類中做非ARC(因爲必須的消息被禁止),你不能在非ARC類中做ARC(因爲ARC添加了無ARC的無效語法元素)。
關於是否可以將非ARC庫/框架集成到ARC程序中,相同的文檔更清晰一點:是的。它沒有提到你是否可以在所有代碼都是非ARC的程序中使用ARC庫/框架,但考慮到上述所有情況,其含義似乎是肯定的。
謝謝!我已經想出瞭如何爲現有的非ARC類禁用ARC。 – nonamelive
你能跟我們分享你在做什麼嗎? –
@David H:如果你打算向提問者說明這一點,你應該注意提問者將他們的解決方案編輯成問題。 –
如果您想要禁用某些文件的自動引用計數,那麼只需執行以下步驟即可輕鬆完成自動引用計數。您可以在目標 - >構建階段 - >編譯源中添加編譯器標誌。
使用的標誌是-fno-objc弧寫作之後按回車! 您必須雙擊Compiler Flags下的右列。 希望它能幫助謝謝:)
這是不是很直觀如何在多禁用ARC文件,有一陣子我做一個接一個,直到想出如何做到這一點。
這不是真正的答案,而是一個血腥的小提示!投票+1 –
你是對的,這不是,但我總是隻是搜索開關,這是答案之一。我認爲現在大多數人已經知道答案,但不是這個「提示」 – Tibidabo
是PO可以通過爲這些文件添加-fno-objc-arc編譯器標誌來禁用單個文件的ARC。
要爲個人類,你需要去點擊Xcode中的項目後,建設階段和擴大編譯源代碼部分禁用ARC。
在右側,您會看到爲特定類添加編譯器標誌的選項。爲該類設置-fno-objc-arc將禁用ARC。
爲了澄清,你只需將其添加到'.m'文件。不是'.h'文件。 – ma11hew28
[ARC在LLVM網站上公開記錄](http://clang.llvm.org/docs/AutomaticReferenceCounting.html) –
我發現了這個對話: https://github.com/gowalla/AFNetworking/issues/ 36也許它可以幫助某人如何在iOS5 ARC支持的項目中集成JSONKit ;-)但是我現在還沒有嘗試過...... – 2011-10-17 06:48:16