【问题标题】:How can one turn ARC off for specific file如何为特定文件关闭 ARC
【发布时间】:2011-11-23 20:00:32
【问题描述】:

我知道我应该将编译器标志 -fno-objc-arc 添加到 XCode 4 的编译源中来完成此操作。但它不起作用。即使添加了标志,我的KeychainItemWrapper.m 文件中仍然出现错误,声称我需要将__bridge 用于C 指针。

我的项目是 ARC 安全的,但 Apple 提供的与钥匙串交互的参考不是。我只想禁用该单个文件的 ARC。我在这里还缺少什么?

【问题讨论】:

  • KeychainItemWrapper.m 和 KeychainItem.m 是两个独立的文件吗?如果是,您是否也为 KeychainItem.m 禁用了 ARC?
  • 您是否查看了构建输出以查看在编译该特定文件时是否包含这些编译器标志?

标签: ios iphone automatic-ref-counting


【解决方案1】:

我在 4.2 的不同项目中不止一次发生过这种情况,但是我无法可靠地重现它以报告错误。但我可以说,在我的情况下,一个干净的构建清除了它。

【讨论】:

  • 经过多次头疼后,这就是我最终得出的解决方案。谢谢你:)
【解决方案2】:

单击“编辑”菜单,转到“重构”>“转换为 Objective-C ARC...”单击项目名称旁边的显示三角形并检查所有要使用 ARC 的文件。

【讨论】:

    【解决方案3】:

    可以通过为这些文件添加 -fno-objc-arc 编译器标志来禁用单个文件的 ARC。

    您在 Targets -> Build Phases -> Compile Sources 中添加编译器标志。您必须双击编译器标志下行的右列。您也可以将其添加到多个文件中,方法是按住 cmd 按钮选择文件,然后按 enter 调出标志编辑框。

    我创建了一个示例项目,其中包含一个示例:https://github.com/jaminguy/NoArc

    有关更多信息,请参阅此答案:禁用某些文件的自动引用计数

    【讨论】:

      猜你喜欢
      • 2012-02-04
      • 2012-12-05
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 2012-02-03
      相关资源
      最近更新 更多