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


1341

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

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


Answers:


2167

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

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

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

代码

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


57
因此,添加此标志的位置不太直观。但是,在Xcode 4中,在构建阶段和编译源中,实际上有两列。一个用于文件名,另一个用于该文件的编译标志。在这里输入此特定的编译器标志。
casademora 2011年

3
您可以指定目录,即目录中的所有文件吗?一群人呢?
ma11hew28 2011年

4
没有目录。在构建设置中一次仅一个文件:(
casademora 2011年

13
@casademora您无法获得足够的支持。谢谢。
theTRON

26
@casademora,您可以一次选择多个文件-但不要双击然后点击RETURN。然后只需添加-fno-objc-arc,它将被添加到所有选定的文件中。编辑刚看到下面这个答案:(
pkyeck

460

多个文件禁用ARC

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

;)

在此处输入图片说明


2
谢谢!一直在寻找这个功能。选择多个行时,双击不起作用,但按Enter则起作用。太奇怪了。
bobmoff 2012年

4
哇哦 我会花我所有的业力再次投票支持。感谢分享!
jemmons,2012年

这似乎不再适用于Xcode 4.3.3。双击或在选定文件上按Enter键不会弹出显示-fno-ojbc-arc标志的对话框,有人对此有解决方法吗?
tom 2012年

我有4.3.3,现在有4.4 DP7,它仍然可以正常工作。尝试重新启动Xcode,重新启动计算机和修复权限。
Tibidabo

44

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


36

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

请按照以下步骤操作:

在单个文件上禁用ARC:

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

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

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

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


35

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

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


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

禁用特定文件的ARC


13

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

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

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

如下图所示:

在此处输入图片说明



11

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

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


6

如果您使用的是Unity,则无需在Xcode中进行更改,您可以在Unity内部的特定文件的元数据中应用编译标志。只需在“项目”面板中选择它们,然后从“检查器”面板中应用即可。如果您计划使用Cloud Build,这是必不可少的。在此处输入图片说明



5

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

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

2

只需在不希望对其应用ARC的文件前面的“构建阶段”>“编译源”中使用-fno-objc-arc标志。


-1
  1. 选择项目->目标->构建阶段->编译器源
  2. 选择文件->编译器标志
  3. 添加-fno-objc-arc

-2

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

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

在粘贴后粘贴此代码段“ -fno-objc-arc”

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


5
您的答案没有为这个旧问题提供任何补充。
vikingosegundo 2015年

-2

按照以下步骤启用禁用ARC

选择Xcode项目转到目标选择“构建阶段”部分在“构建阶段”部分中,选择编译源。选择您不想禁用ARC的文件,然后添加-fno-objc-arc


1
您的答案没有为这个旧问题提供任何补充。
jomafer

还需要什么。如果您比提供我们更好。
annu

我没有投票给你。只是在2011年7月11日5:21提出了这个问题。有太多没有相同信息的答案,并且没有添加任何有用的信息...我怀疑有人出于这个原因对您
投了反对票

你能给我简要介绍一下吗?
annu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.