1363

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

这可能吗?如何在每个文件的基础上禁用 ARC?

4

18 回答 18

2181

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

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

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

代码

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

于 2011-07-12T01:22:15.520 回答
462

多个文件上禁用 ARC :

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

;)

在此处输入图像描述

于 2012-04-01T00:30:10.433 回答
44

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

于 2012-07-18T22:28:26.170 回答
37

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

请按照以下步骤操作:

在单个文件上禁用 ARC:

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

  2. 选择 .m 文件,将其设为 NON-ARC PRESS ENTER 类型-fno-objc-arc

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

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

于 2013-07-05T05:55:49.580 回答
35

注意:如果你想为许多文件禁用 ARC,你必须:

  1. 打开“构建阶段”->“编译源”
  2. 使用“left_mouse”+“cmd”(用于分隔文件)或+“shift” (用于分组文件-选择第一个和最后一个)选择文件
  3. 按“输入”
  4. 粘贴-fno-objc-arc
  5. 再次按“输入”
  6. 利润!
于 2013-03-07T12:53:50.783 回答
22

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

于 2012-11-28T09:56:56.183 回答
13
  1. 选择 Xcode 项目
  2. 前往目标
  3. 选择构建阶段部分
  4. 在构建阶段部分中选择编译源。
  5. 选择您不想禁用 ARC 的文件并添加 -fno-objc-arc

为特定文件禁用 ARC

于 2014-01-20T09:03:57.397 回答
13

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

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

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

如下图所示:

在此处输入图像描述

于 2014-03-20T14:24:34.010 回答
11

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

于 2013-09-25T10:24:05.710 回答
11

视频中解释的四个强制性步骤

    //1. Select desired files
    //2. Target/Build Phases/Compile Sources
    //3. Type -fno-objc-arc
    //4. Done
于 2013-10-21T19:16:31.517 回答
8

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

在此处输入图像描述

于 2016-09-02T15:08:18.700 回答
7

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

于 2015-10-18T21:37:55.697 回答
5

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

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

于 2013-10-10T14:25:41.823 回答
5

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

  1. 在 Xcode 的 Target/Build Phases/Compile Sources 中选择所需的文件
  2. 按回车
  3. 输入-fobjc-arc
  4. 按 Enter 或完成
于 2015-12-30T10:46:36.060 回答
2

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

于 2014-09-18T11:19:39.110 回答
-1

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

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

粘贴此片段“-fno-objc-arc” 粘贴后按 ENTER

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

于 2015-02-24T10:03:34.577 回答
-1
  1. 选择项目 -> 目标 -> 构建阶段 -> 编译器源
  2. 选择文件-> 编译器标志
  3. 添加-fno-objc-arc
于 2018-05-07T10:15:51.037 回答
-2

按照步骤启用禁用 ARC

选择 Xcode 项目 Go to targets 选择 Build Phases 部分 在 build Phases 部分中选择编译源。选择您不想禁用 ARC 的文件并添加 -fno-objc-arc

于 2015-03-09T07:25:38.950 回答