【问题标题】:Batch adding "-fno-objc-arc" flag to (multiple) source files批量添加“-fno-objc-arc”标志到(多个)源文件
【发布时间】:2012-04-17 02:30:25
【问题描述】:

将 Xcode 项目转换为 ARC(自动引用计数)后,我需要为我的一些源文件(主要是第三方代码)禁用 ARC。

我知道我需要为这些文件中的每一个设置“-fno-objc-arc”标志,但是 Xcode 没有给我批量编辑的选项 - 我需要手动将此标志添加到每个文件中,这如果您需要为多个文件设置它可能会很乏味。

有人对此有聪明的方法吗?

【问题讨论】:

    标签: iphone objective-c ios xcode4 automatic-ref-counting


    【解决方案1】:

    选择要添加标志的那些(使用 Shift 和/或 Command)并按 Enter 以显示标志编辑器.按完成将输入的标志应用到选定的文件。

    教程

    我编写了一个blog post 作为此过程的教程。

    【讨论】:

    • 很好!!我从不知道你可以做到这一点 +1
    • 又快又好!试过多选双击,没想到回车!
    • 是的,它不是很直观。
    • 这可能不是很直观,因为您不应该手动操作 - 这就是 ARC 转换工具的用途。请参阅下面的答案。
    • 知道如何为派生源执行此操作吗?
    【解决方案2】:

    到目前为止,最简单的选择就是使用 Edit > Refactor 下的 ARC 转换工具。

    这不是很清楚,但基本上你只需选中任何你想使用 ARC 的文件,然后取消选中你不想使用的任何文件。这将执行以下操作:

    1) 未选中的文件将应用 -fno-objc-arc 标志

    2) 被检查的文件将被转换为 ARC

    3) 已被检查的已转换为 ARC 的文件将保持不变

    再仔细阅读一遍。有时让人们感到困惑的是,他们认为在再次运行该工具时应该不选中已经转换的文件,但这会错误地将 -fno-objc-arc 应用于这些文件(导致泄漏)。

    您应该将 ARC 转换工具视为“批量选择 ARC 兼容文件并转换尚未 ARC 的文件”工具,而不是直接转换工具。

    您可以根据需要多次运行转换工具 - 效果不会累积(尽管将文件转换为 ARC 是不可逆的)。

    【讨论】:

      【解决方案3】:

      我需要设置不应该支持 ARC 的文件(主要是 3rd-party 代码)。

      除了管理标志之外,您还可以简单地为这些源创建一个静态库,然后进行链接。

      【讨论】:

      • 我发现图书馆制作是一个令人困惑且常常是徒劳的过程。由于您一直在检查标头和调整构建设置,您可以简单地设置编译器标志并完成它。
      • @CodaFi 在编写和配置了许多库之后,我的看法完全相反:)
      • 我认为这完全取决于您需要维护多少个应用程序。
      • @CodaFi 还有更多变量。例如,我使用的警告和优化设置比典型的第三方库要高得多。这可能会在我的构建输出中产生很多噪音,甚至会产生不正确的结果。同样,我不希望主项目(我的代码)有各种各样的噪音,例如奇怪的预处理器定义、头文件依赖项或许多第三方程序最终使用的异常发现路径。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      相关资源
      最近更新 更多