-fno-objc-arc无法禁用ARC

时间:2012-05-30 15:10:52

标签: objective-c xcode memory-management automatic-ref-counting afnetworking

我已尝试the solution found in this post在AFNetworking文件中禁用ARC,但无济于事:

enter image description here

我失败的任何想法?显然答案越简单越好。我还读到创建静态库可能有所帮助,但这看起来很复杂。

EDITS

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

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

7 个答案:

答案 0 :(得分:16)

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

enter image description here

希望这会对某人有所帮助:)。

答案 1 :(得分:5)

再加上一点提示:

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

答案 2 :(得分:3)

"转换为Objective-C ARC"是一个代码重写工具,-fno-objc-arc另一方面是编译时标志。它与重构的目的无关。

在点击"检查"之前,消耗目标并取消选择您要保持ARC免费的文件。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

我设法通过.m文件进入此状态#imported .m文件不符合ARC标准。编译器抱怨包含的文件,该文件可能被标记为-fno-objc-arc。我不得不标记正在进行包含的.m

我通过在失败时扩展构建输出并查看显示无法编译的文件的原始日志(与警告中的文件不同)来发现这一点。

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

答案 5 :(得分:0)

有同样的问题,但无法找到有问题的文件(如Brotto的解决方案)。因此,只需将非弧投诉代码片段包装在以下#if语句块中:

#if !(__has_feature(objc_arc))

//...non-arc code

#endif

答案 6 :(得分:0)

我能够通过取消选中Refactor中的非ARC文件来修复我的问题 - >转换为Objective-C ARC模态。即使由于'fno-objc-arc'标志,文件已经被解除了。一旦我取消选中文件,Xcode就开始吐出更好的错误,让我找到需要修复的文件。做出这些改变后,我很高兴。