如何为项目中的单个文件禁用 ARC?

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

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

答案

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

您可以在目标 -> 构建阶段 -> 编译源中添加编译器标志。您必须双击 “ 编译器标志”下该行的右列。您还可以通过以下方式将其添加到多个文件中:按住 cmd 按钮选择文件,然后按 Enter 弹出标记编辑框。 (请注意,编辑多个文件将覆盖它可能已经拥有的所有标志。)

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

Xcode的

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

多个文件禁用 ARC

  1. 在 Xcode 的目标 / 构建阶段 / 编译源中选择所需的文件
  2. 按 ENTER
  3. 输入-fno-objc-arc
  4. Enter完成

;)

在此处输入图片说明

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

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

请按照以下步骤操作:

在单个文件上禁用 ARC:

  1. 在 Xcode 的目标 / 构建阶段 / 编译源中选择所需的文件

  2. 选择要使其成为. m 文件的 NON-ARC PRESS ENTER 类型-fno-objc-arc

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

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

注意:如果要禁用许多文件的 ARC ,则必须:

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

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

  1. 选择 Xcode 项目
  2. 前往目标
  3. 选择构建阶段部分
  4. 在构建阶段部分中,选择编译源。
  5. 选择您不想禁用 ARC 的文件,然后添加 - fno-objc-arc

禁用特定文件的ARC

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

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

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

如下图所示:

在此处输入图片说明

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

视频中所述的四个强制步骤

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