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

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


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

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

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

更多信息请看这个答案: 禁用某些文件的自动引用计数


对多个文件禁用ARC:

在Xcode中的目标/构建阶段/编译源中选择所需的文件 按回车键 类型-fno-objc-arc 按Enter或Done

;)


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


在Build Phases>Compile Sources中使用-fno-objc-arc标志即可


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

打开“构建阶段”->“编译源代码” 选择文件与"left_mouse" + "cmd"(分开的文件)或+ "shift" (对于分组文件-选择第一个和最后一个) 按“输入” 粘贴-fno-objc-arc 再次按“enter” 利润!


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

遵循以下步骤:

在单个文件上禁用ARC:

在Xcode中的目标/构建阶段/编译源中选择所需的文件 选择。m文件,你想让它成为NON-ARC 按回车键 类型-fno-objc-arc

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

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


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


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

简单的以下步骤: 应用>目标>构建阶段>编译源>添加标记后类" -fno-objc-arc "


本视频中解释的四个必修步骤

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

选择Xcode项目 瞄准目标 选择Build phases部分 在构建阶段部分中选择编译源。 选择你不想禁用ARC的文件并添加-fno-objc-arc


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

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

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

如下图:


只要在Build Phases>Compile Sources中使用-fno-objc-arc标志,在你不想使用ARC的文件前面。


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

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

粘贴这个片段"-fno-objc-arc"粘贴后按ENTER

在您想禁用ARC的每个文件中。


执行以下步骤以启用禁用ARC

选择Xcode项目 瞄准目标 选择Build phases部分 在构建阶段部分中选择编译源。 选择你不想禁用ARC的文件并添加-fno-objc-arc


如果你使用Unity,你不需要在Xcode中改变这个,你可以在Unity内部的特定文件的元数据中应用一个compile标志。只需在Project面板中选择它们,并从Inspector面板中应用。如果您计划使用Cloud Build,这是必不可少的。


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

在Xcode中的目标/构建阶段/编译源中选择所需的文件 按回车键 类型-fobjc-arc 按Enter或Done


请按照截图输入-fno-objc-arc。


选择项目->目标->构建阶段->编译器源 选择file ->编译器标志 添加-fno-objc-arc