【发布时间】:2012-12-04 18:04:15
【问题描述】:
我在我的项目中成功使用了 ARC。但是,我遇到了一些文件(例如,在单元测试和模拟对象中),现在 ARC 的规则有点脆弱。我记得听说有一种方法可以在每个文件的基础上禁用 ARC,但我一直找不到这个选项。
这可能吗?如何按文件禁用 ARC?
【问题讨论】:
标签: objective-c xcode automatic-ref-counting manual-retain-release
我在我的项目中成功使用了 ARC。但是,我遇到了一些文件(例如,在单元测试和模拟对象中),现在 ARC 的规则有点脆弱。我记得听说有一种方法可以在每个文件的基础上禁用 ARC,但我一直找不到这个选项。
这可能吗?如何按文件禁用 ARC?
【问题讨论】:
标签: objective-c xcode automatic-ref-counting manual-retain-release
【讨论】:
我认为所有其他答案都在解释如何禁用 MRC(手动引用计数)和启用 ARC(自动引用计数)。 要使用 MRC(手动引用计数),即在多个文件上禁用 ARC(自动引用计数):
【讨论】:
可以通过为这些文件添加 -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
【讨论】:
-fno-objc-arc,它将被添加到所有选定的文件中。 edit 刚刚看到下面这个答案:(
使单个文件非弧形的方法非常简单。
按照以下步骤:
对单个文件禁用 ARC:
在 Xcode 中的 Target/Build Phases/Compile Sources 中选择所需的文件
选择 .m 文件,将其设为 NON-ARC 按回车 输入 -fno-objc-arc
非 ARC 文件到 ARC 项目标志:-fno-objc-arc
ARC 文件到非 ARC 项目标志:-fobjc-arc
【讨论】:
禁用 ARCMULTIPLE 文件:
;)
【讨论】:
按照步骤启用禁用 ARC
选择 Xcode 项目 前往目标 选择构建阶段部分 在构建阶段部分中选择编译源。 选择您不想禁用ARC的文件并添加-fno-objc-arc
【讨论】:
转到应用程序 -> 然后目标 -> 构建阶段 -> 编译源代码
现在,选择要禁用 ARC 的文件
粘贴这个sn -p "-fno-objc-arc" 粘贴后按回车
在您要禁用 ARC 的每个文件中。
【讨论】:
只需在 Build Phases>Compile Sources 中使用 -fno-objc-arc 标志,在您不想应用 ARC 的文件前面。
【讨论】:
可以在 Xcode 中为特定文件禁用 ARC(自动引用计数)。
选择目标 -> 构建阶段 -> 编译源 -> 选择文件(双击) -> 将“-fno-objc-arc”添加到弹出窗口。
我在使用“可达性”文件时遇到过这种情况。
如下图所示:
【讨论】:
只需在 Build Phases>Compile Sources 中使用 -fno-objc-arc 标志
【讨论】:
【讨论】:
video 中解释的四个强制步骤
//1. Select desired files
//2. Target/Build Phases/Compile Sources
//3. Type -fno-objc-arc
//4. Done
【讨论】:
添加标志“-fno-objc-arc”。
简单的步骤: App>Targets>Build Phases>Compile Sources> 在类“-fno-objc-arc”之后添加标志
【讨论】:
在构建阶段对每个文件使用 -fno-objc-arc
【讨论】:
注意:如果您想对多个文件禁用 ARC,您必须:
-fno-objc-arc
【讨论】:
对于 Xcode 4.3,更简单的方法可能是:编辑/重构/转换为 Objective-C ARC,然后勾选您不想转换的文件。我发现这种方式与使用上面的编译器标志相同。
【讨论】: