我認爲標題很好地解釋了我的問題,目前我正在爲我的個人需求開發一個小框架,並考慮使用ARC構建它(如果可能的話),並將其用於舊項目在ARC之前建立?我可以構建一個ARC框架並將其用於非ARC項目嗎?
8
A
回答
7
是的,有一點需要注意:如果您有iOS 4.x作爲部署目標,則需要補充庫來處理舊版運行庫上的ARC編譯代碼。對於使用ARC構建的應用程序,這與應用程序一起打包。如果您在非ARC應用程序中使用ARC編譯的庫,則不包括此內容。
通過將-fobjc-arc
添加到應用程序的其他鏈接器標誌中,您可以手動將此庫鏈接到非ARC應用程序中,以避免舊操作系統版本出現運行時問題。
請參閱this Apple Developer Forums thread瞭解更多關於此的討論。
1
應該沒問題。該庫已經編譯完成,因此ARC/NonARC不再有問題了。
+1
舊的運行時和啓用ARC的靜態庫存在一個潛在的問題,我在我的答案中詳細說明了這一點。 –
2
您可以鏈接Apple提供的粘貼庫(如Brad在上面的答案中所述)。但是,__weak變量限定符與4.3以下的操作系統不兼容(如此處所述:在sudo的註釋中提及iOS 5 Best Practice (Release/retain?))。
相關問題
- 1. 我可以在ARC構建應用程序中使用非ARC構建框架嗎?
- 2. 是否可以組合非ARC和ARC項目代碼?
- 3. 將非ARC轉換爲ARC
- 4. 將非ARC文件轉化爲Xcode 4中的ARC項目
- 5. Singleton在具有ARC和非ARC的項目中起作用?
- 6. ARC和非ARC框架 - iOS - 適當的釋放不工作?
- 7. GC應用程序可以鏈接到ARC框架嗎?
- 8. 在非ARC項目中包含ARC標題
- 9. 我可以將此項目視爲一個框架嗎?
- 10. ARC與非ARC removeLastObject方法
- 11. 非ARC項目:NSMutableArray,NSString內存泄漏
- 12. 在啓用ARC的項目中使用非ARC代碼 - 添加Facebook
- 13. 我可以用類,xib和圖像創建一個框架並將其作爲另一個項目用作框架嗎?
- 14. 在32位使用ARC創建一個Maverics項目
- 15. 是否可以將項目與ARC轉換爲MRC?
- 16. 無法在Xcode 6中構建 - Apple框架中的ARC問題
- 17. 可以在同一個項目中使用兩個框架嗎?
- 18. ARC可以導致內存泄漏嗎?
- 19. 可以通過Clojure實現Arc嗎?
- 20. 在NON-ARC項目中使用ARC靜態庫
- 21. ARC調用非ARC非自動釋放方法
- 22. ARC支持靜態庫鏈接到非ARC項目導致鏈接器錯誤
- 23. 我可以將使用ARC的靜態庫鏈接到項目目標iOS 3.2嗎?
- 24. 有沒有一種方法來保持整個項目沒有ARC,同時在新項目上使用ARC
- 25. 如何從iOS項目構建中爲iOS 5移除ARC?
- 26. 關於ARC
- 27. 我在哪裏可以找到CocoaAsyncSocket的非ARC版本?
- 28. 可可 - 如何用ARC創建TCP Socket?
- 29. 如何在沒有ARC的情況下爲使用ARC的項目構建靜態庫?
- 30. 啓用ARC for theos構建系統
我剛剛在一個項目中嘗試過,並沒有幫助,你有機會看看嗎? http://stackoverflow.com/questions/8375233/ld-duplicate-symbol-objc-retainedobject-on-ios-4-3-but-not-on-ios-5-0 –
爲什麼會有任何運行時問題? ARC不是在編譯時進行的? –
@ZakyGerman - ARC不僅僅是在正確的位置注入'-retain'和'-release',而且它引入了新的'@ autoreleasepool'之類的東西,所以它需要一些運行時幫助。這是內置於iOS 5.0,但4.x需要這個向後兼容性庫。 –