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

cas*_*ora 1332 xcode objective-c automatic-ref-counting manual-retain-release

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

这可能吗?如何基于每个文件禁用ARC?

jam*_*guy 2162

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

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

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

Xcode中

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

  • 因此,添加此标志的位置不是太直观.但是,在Xcode 4中,在构建阶段和编译源中,实际上有两列.一个用于文件名,另一个用于该文件的编译标志.这是您输入此特定编译器标志的位置. (57认同)
  • @casademora你可以一次选择多个文件 - 但是不要双击但是点击RETURN.然后只需添加`-fno-objc-arc`,它将被添加到所有选定的文件中.**编辑**刚看到这一个下面的答案:( (26认同)
  • @casademora你无法得到足够的赞成这条信息.谢谢. (13认同)
  • 没有目录.在构建设置中一次只有一个文件:( (4认同)
  • 你能指定一个目录,即目录中的所有文件吗?对于一个集团呢? (3认同)
  • 是的,这可行,但Xcode 4.2.1仍然在编辑器窗口上生成难看的ARC错误,尽管它最终编译得很好.您可能希望将所有非ARC文件放入静态库并将其链接到主目标. (2认同)

Tib*_*abo 461

MULTIPLE文件禁用ARC :

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

;)

在此输入图像描述

  • 哇哇 我会花掉所有的业力来再次投票.感谢分享! (4认同)
  • 谢谢!一直在寻找这个功能.选择多行时双击不起作用,但按Enter键不起作用.太奇怪了. (2认同)

Jin*_*han 45

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


Dip*_*ara 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


dig*_*ple 35

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

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


Rah*_*pta 22

只需使用>中的-fno-objc-arc标志即可Build PhasesCompile Sources


小智 13

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

禁用特定文件的ARC


Jay*_*bey 13

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

选择Target - > Build Phases - > Compile Sources - > Select File(双击) - >将"-fno-objc-arc"添加到弹出窗口.

我在使用"可访问性"文件时遇到过这种情况.

如下图所示:

在此输入图像描述


Ami*_*wal 11

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


小智 11

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

    //1. Select desired files
    //2. Target/Build Phases/Compile Sources
    //3. Type -fno-objc-arc
    //4. Done
Run Code Online (Sandbox Code Playgroud)


Tun*_*her 8

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

在此输入图像描述


小智 6

如果你正在使用Unity,你不需要在Xcode中更改它,你可以在Unity内部的特定文件的元数据中应用编译标志.只需在"项目"面板中选择它们,然后从"检查器"面板中应用它们.如果您计划使用Cloud Build,这一点至关重要.在此输入图像描述


小智 5

添加标志"-fno-objc-arc".

简单的按照步骤:应用程序>目标>构建阶段>编译源>在类"-fno-objc-arc"之后添加标志


Vin*_*Vin 5

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

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