1

我有一個應用程序使用GC進行內存管理和一個自動引用計數的框架。當我嘗試構建它時,出現此錯誤:GC應用程序可以鏈接到ARC框架嗎?

Linked dylibs built for retain/release but object files built for GC-only for architecture x86_64 

是否有正確的方式在此GC應用程序中使用ARC框架而不更改它?我記得讀到ARC代碼似乎適用於非ARC代碼,但我只能找到每個文件編譯器開關(-fobjc-arc)。

+0

框架和應用程序位於單獨的項目中,由工作區組成。 – febeling 2012-02-17 10:36:45

回答

1

否。ARC代碼與手動保留釋放代碼一起使用,但不與GC代碼一起使用。僅爲垃圾收集構建的框架不適用於手動保留髮布代碼或ARC;以GC可選模式構建的框架對兩者都適用。

+0

這是爲什麼?我通常可以使用GC的任何框架,其中大部分都是手動內存管理的。 ARC被解釋爲讓編譯器自動完成手動內存管理的功能。 – febeling 2012-02-21 22:20:32

+0

你錯了。 GC和手動RR代碼不能一起使用。 – 2012-02-22 22:50:43

+0

手動存儲器管理的框架「支持」GC是可行的且相當普遍的做法。我只是看着那個。這就是我在評論中所說的「我通常可以使用任何東西」。無可否認這太寬泛了。儘管蘋果預裝的所有框架似乎都以這種方式工作,並且許多主流的開源軟件也是如此。所以在這個意義上我沒有錯,你同意嗎? – febeling 2012-02-22 23:21:20

相關問題