2011-11-01 63 views

回答

7

是的,有一點需要注意:如果您有iOS 4.x作爲部署目標,則需要補充庫來處理舊版運行庫上的ARC編譯代碼。對於使用ARC構建的應用程序,這與應用程序一起打包。如果您在非ARC應用程序中使用ARC編譯的庫,則不包括此內容。

通過將-fobjc-arc添加到應用程序的其他鏈接器標誌中,您可以手動將此庫鏈接到非ARC應用程序中,以避免舊操作​​系統版本出現運行時問題。

請參閱this Apple Developer Forums thread瞭解更多關於此的討論。

+0

我剛剛在一個項目中嘗試過,並沒有幫助,你有機會看看嗎? http://stackoverflow.com/questions/8375233/ld-duplicate-symbol-objc-retainedobject-on-ios-4-3-but-not-on-ios-5-0 –

+0

爲什麼會有任何運行時問題? ARC不是在編譯時進行的? –

+0

@ZakyGerman - ARC不僅僅是在正確的位置注入'-retain'和'-release',而且它引入了新的'@ autoreleasepool'之類的東西,所以它需要一些運行時幫助。這是內置於iOS 5.0,但4.x需要這個向後兼容性庫。 –

1

應該沒問題。該庫已經編譯完成,因此ARC/NonARC不再有問題了。

+1

舊的運行時和啓用ARC的靜態庫存在一個潛在的問題,我在我的答案中詳細說明了這一點。 –

2

您可以鏈接Apple提供的粘貼庫(如Brad在上面的答案中所述)。但是,__weak變量限定符與4.3以下的操作系統不兼容(如此處所述:在sudo的註釋中提及iOS 5 Best Practice (Release/retain?))。

相關問題