【问题标题】:How can I disable ARC for a single file in a project?如何为项目中的单个文件禁用 ARC?
【发布时间】:2012-12-04 18:04:15
【问题描述】:

我在我的项目中成功使用了 ARC。但是,我遇到了一些文件(例如,在单元测试和模拟对象中),现在 ARC 的规则有点脆弱。我记得听说有一种方法可以在每个文件的基础上禁用 ARC,但我一直找不到这个选项。

这可能吗?如何按文件禁用 ARC?

【问题讨论】:

标签: objective-c xcode automatic-ref-counting manual-retain-release


【解决方案1】:
  1. 选择项目 -> 目标 -> 构建阶段 -> 编译器源
  2. 选择文件 -> 编译器标志
  3. 添加-fno-objc-arc

【讨论】:

    【解决方案2】:

    请按照截图输入-fno-objc-arc

    【讨论】:

      【解决方案3】:

      我认为所有其他答案都在解释如何禁用 MRC(手动引用计数)和启用 ARC(自动引用计数)。 要使用 MRC(手动引用计数),即在多个文件上禁用 ARC(自动引用计数):

      1. 在 Xcode 中的 Target/Build Phases/Compile Sources 中选择所需的文件
      2. 按回车
      3. 类型-fobjc-arc
      4. 按 Enter 或完成

      【讨论】:

        【解决方案4】:

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

        您在 Targets -> Build Phases -> Compile Sources 中添加编译器标志。您必须双击Compiler Flags 下行的右列。您也可以通过按住 cmd 按钮选择文件,然后按 Enter 调出标志编辑框,将其添加到多个文件中。 (请注意,编辑多个文件将覆盖它可能已经拥有的任何标志。)

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

        有关更多信息,请参阅此答案: Disable Automatic Reference Counting for Some Files

        【讨论】:

        • 所以,添加这个标志的地方不太直观。但是,在 Xcode 4 中,在构建阶段和编译源代码中,实际上有两列。一个用于文件名,另一个用于该文件的编译标志。这是您输入此特定编译器标志的地方。
        • 你能指定一个目录,即一个目录中的所有文件吗?组呢?
        • 没有目录。在构建设置中一次只有一个文件:(
        • @casademora 您无法为这条信息获得足够的支持。谢谢。
        • @casademora 您可以一次选择多个文件 - 但不要双击而是按 RETURN。然后只需添加-fno-objc-arc,它将被添加到所有选定的文件中。 edit 刚刚看到下面这个答案:(
        【解决方案5】:

        使单个文件非弧形的方法非常简单。

        按照以下步骤:

        对单个文件禁用 ARC:

        1. 在 Xcode 中的 Target/Build Phases/Compile Sources 中选择所需的文件

        2. 选择 .m 文件,将其设为 NON-ARC 按回车 输入 -fno-objc-arc

        非 ARC 文件到 ARC 项目标志:-fno-objc-arc

        ARC 文件到非 ARC 项目标志:-fobjc-arc

        【讨论】:

          【解决方案6】:

          如果您使用 Unity,则无需在 Xcode 中更改此设置,您可以在 Unity 内部的特定文件的元数据中应用编译标志。只需在 Project 面板中选择它们,然后从 Inspector 面板中应用。如果您计划使用 Cloud Build,这一点至关重要。

          【讨论】:

            【解决方案7】:

            禁用 ARCMULTIPLE 文件:

            1. 在 Xcode 中的 Target/Build Phases/Compile Sources 中选择所需的文件
            2. 按回车
            3. 键入 -fno-objc-arc
            4. Enter完成

            ;)

            【讨论】:

            • 谢谢!找这个功能很久了。选择多行时双击不起作用,但按回车键可以。太奇怪了。
            • 哇哦。我会花费我所有的业力再次对此进行投票。感谢分享!
            • 这似乎不再适用于 Xcode 4.3.3。在所选文件上双击或按 Enter 不会弹出用于放入 -fno-ojbc-arc 标志的对话框,有人有解决方法吗?
            • 我有 4.3.3,现在有 4.4 DP7,它仍然可以正常工作。尝试重启 Xcode,重启机器并修复权限。
            【解决方案8】:

            按照步骤启用禁用 ARC

            选择 Xcode 项目 前往目标 选择构建阶段部分 在构建阶段部分中选择编译源。 选择您不想禁用ARC的文件并添加-fno-objc-arc

            【讨论】:

            • 您的回答没有为这个老问题提供任何补充。
            • 需要什么补充。如果您比提供我们更了解。
            • 我没有对你投反对票。正是这个问题是在 2011 年 7 月 11 日 5:21 提出的。有太多答案相同的答案没有添加任何有用的信息...我怀疑有人因此而对您投反对票...
            • 你能给我简单介绍一下吗?
            【解决方案9】:

            转到应用程序 -> 然后目标 -> 构建阶段 -> 编译源代码

            现在,选择要禁用 ARC 的文件

            粘贴这个sn -p "-fno-objc-arc" 粘贴后按回车

            在您要禁用 ARC 的每个文件中。

            【讨论】:

            • 您的回答没有为这个老问题提供任何补充。
            【解决方案10】:

            只需在 Build Phases>Compile Sources 中使用 -fno-objc-arc 标志,在您不想应用 ARC 的文件前面。

            【讨论】:

              【解决方案11】:

              可以在 Xcode 中为特定文件禁用 ARC(自动引用计数)。

              选择目标 -> 构建阶段 -> 编译源 -> 选择文件(双击) -> 将“-fno-objc-arc”添加到弹出窗口。

              我在使用“可达性”文件时遇到过这种情况。

              如下图所示:

              【讨论】:

                【解决方案12】:

                只需在 Build Phases>Compile Sources 中使用 -fno-objc-arc 标志

                【讨论】:

                  【解决方案13】:
                  1. 选择 Xcode 项目
                  2. 转到目标
                  3. 选择构建阶段部分
                  4. 在构建阶段部分中选择编译源。
                  5. 选择您不想禁用ARC的文件并添加-fno-objc-arc

                  【讨论】:

                    【解决方案14】:

                    video 中解释的四个强制步骤

                        //1. Select desired files
                        //2. Target/Build Phases/Compile Sources
                        //3. Type -fno-objc-arc
                        //4. Done
                    

                    【讨论】:

                      【解决方案15】:

                      添加标志“-fno-objc-arc”。

                      简单的步骤: App>Targets>Build Phases>Compile Sources> 在类“-fno-objc-arc”之后添加标志

                      【讨论】:

                        【解决方案16】:

                        在构建阶段对每个文件使用 -fno-objc-arc

                        【讨论】:

                          【解决方案17】:

                          注意:如果您想对多个文件禁用 ARC,您必须:

                          1. 打开“构建阶段”->“编译源代码”
                          2. 使用 "left_mouse" + "cmd"(用于分隔文件)或 +"shift" 选择文件 (对于分组文件 - 选择第一个和最后一个)
                          3. 按“回车”
                          4. 粘贴-fno-objc-arc
                          5. 再次按“回车”
                          6. 利润!

                          【讨论】:

                            【解决方案18】:

                            对于 Xcode 4.3,更简单的方法可能是:编辑/重构/转换为 Objective-C ARC,然后勾选您不想转换的文件。我发现这种方式与使用上面的编译器标志相同。

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多