-fno-objc-arc无法禁用ARC

10
我已尝试此帖子中的解决方案来禁用AFNetworking文件中的ARC,但无效:

输入图像描述

有什么想法我失败了吗?显然,答案越简单越好。我还读到过创建静态库可能有所帮助,但这似乎很复杂。

编辑

我已尝试删除派生数据清理和构建重新启动Xcode。没有成交: (。

另外,我的工作区中没有其他项目。


1
令人困惑。它应该可以工作,我会删除派生数据并重新启动Xcode(这很傻,但Xcode更傻)。 - Jano
也许您为一个目标设置了标志并构建了另一个目标? - lawicko
这并不能解决你的Xcode问题,但我们团队最近开始使用CocoaPods来管理依赖项,它为我们节省了很多时间。有一个规范可以将AFNetworking集成到你的项目中,尽管我没有使用过AFNetworking。 - David V
@EricBrotto,你的代码看起来是正确的。你的Xcode工作区中是否还有其他项目也在编译AFNetwork? - David V
另一种选择是从项目中删除所有对AFNetworking的引用,然后重新添加它们。听起来对我来说很麻烦,但我有同事声称这解决了一些奇怪的Xcode问题。 - David V
显示剩余5条评论
7个回答

17

很奇怪的事情。我试着给一些Facebook的文件添加-fno-objc-arc标志,最终项目构建成功了。我想这里的教训是,当Xcode生成这些类型的错误时,问题的根源可能在另一个文件中。如果Xcode抱怨你已经标记过的文件,那么这可能尤其正确!

输入图像描述

希望这对某些人有所帮助:).


3
我也遇到了同样的问题。你是怎么知道是FB文件导致的问题的? - Jason

5

一个小提示:

如果你的项目中有多个目标,请检查是否在所有目标中添加了编译器标志-fno-objc-arc


3
"将代码转换为Objective-C ARC" 是一种重写代码的工具,而 -fno-objc-arc 则是编译时的标志。对于重构目的来说,它根本不相关。在点击“检查”之前,请展开目标并取消选择您想保持无ARC的文件。"

2
实际上问题很简单。请确保在编译器标志对话框中输入-fno-objc-arc标志后没有回车符。

完美。正是我的问题。 - malaki1974

1

我遇到了同样的问题,但是无法找到有问题的文件(就像Brotto的解决方案中所述)。因此,我只需将不符合ARC标准的代码片段放在以下#if语句块中:

#if !(__has_feature(objc_arc))

//...non-arc code

#endif

1

我通过一个导入了非ARC兼容的.m文件的#imported另一个.m文件,进入了这种状态。编译器抱怨包含的文件,其中可能会标记为-fno-objc-arc。我不得不标记正在包括的.m文件。

通过扩展构建输出并查看原始日志,我发现了这一点,该日志显示未能编译的文件(与警告中的文件不同)。

我还需要删除派生数据文件。


0
我通过在重构 -> 转换为Objective-C ARC模式中取消选择非ARC文件来解决了我的问题。即使这些文件已经由于'fno-objc-arc'标志被排除在外。一旦我取消选择了这些文件,Xcode就开始输出更好的错误信息,让我能够找到需要修复的文件。在进行了这些更改之后,一切都恢复正常了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接