2011-12-01 123 views
18

我正在尝试解决这个问题。我知道如何获得一个ARC项目,该项目使用不使用ARC的文件或静态库。例如,使用编译器标记-fno-objc-arc在NON-ARC项目中使用ARC静态库

但是如果我有一个项目没有使用ARC并且想要包含一个用ARC编译的静态库呢?每次我想建立这个项目时,它都会告诉我它不会识别“strong,__unsafe_unretained,...”之类的东西。

+0

只是好奇,为什么你就不能打开ARC为您的项目和编译器标志添加到您的所有文件?是否有一个特定的原因,您需要禁用ARC? –

+0

该项目是在不久前建立的,同时也使用了很多其他的第三方无弧框架。因此,浏览所有文件并设置编译器标志将是一个单调乏味的过程。我希望有一个更好的/更清洁的解决方案。所以我不需要在超过300个源文件上填写编译器标志...... :) – Yannick

+0

你知道ARC migrator允许你基本上“选择所有”文件来添加标志吗?至少在Xcode 4.2中,不需要手动执行所有文件。 –

回答

8

它应该工作正常 - 你确定你使用最新的Apple编译器与这个非ARC项目,而不是GCC吗?

+1

那么如果我会这样做,我需要从我的项目中删除所有保留/释放调用,并基本上开始ARC整个事情。我不想这样做,因为它有一些旧的遗留代码和一些结构。 – Yannick

+1

不,你不是 - ARC是一个额外的编译器功能,如果你不想使用它,你不必使用它。使用最新的Apple LLVM并不意味着您必须使用ARC--这是您的选择(当您制作新项目时,它甚至可以让您选择使用ARC或不使用ARC)。使用它并不意味着你必须将旧代码转换为ARC。不同之处在于它理解所有这些新的关键字等。 – shw

+1

Jep你是对的。我以为我必须开始ARC'ing,但他只是抱怨几个错过__桥接演员和其他一些错误!谢谢! – Yannick

16

添加到shw的答案。将-fobjc-arc添加到ARC文件的构建阶段中的编译器标志,以使它们可以针对非ARC项目正确编译。

更多信息here

+0

非常棒... – 2013-11-07 10:39:57

相关问题