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

相关问题