我在我的项目中成功使用ARC . 但是,我遇到了一些文件(例如,在单元测试和模拟对象中),其中ARC的规则现在更加脆弱 . 我记得听说有一种方法可以在每个文件的基础上禁用ARC,但我无法找到这个选项 .
这可能吗?如何基于每个文件禁用ARC?
通过为这些文件添加 -fno-objc-arc 编译器标志,可以为单个文件禁用ARC .
-fno-objc-arc
您可以在Targets - > Build Phases - > Compile Sources中添加编译器标志 . 您必须双击Compiler Flags下行的右列 . 您还可以通过按住cmd按钮选择文件然后按Enter键以显示标志编辑框,将其添加到多个文件中 . (请注意,编辑多个文件将覆盖它可能已有的任何标志 . )
我创建了一个示例项目,其中有一个示例:https://github.com/jaminguy/NoArc
有关详细信息,请参阅此答案:Disable Automatic Reference Counting for Some Files
Disable ARC 在 MULTIPLE files:
在Xcode中的Target / Build Phases / Compile Sources中选择所需的文件
PRESS ENTER
类型 -fno-objc-arc
按 Enter 或 Done
;)
对于Xcode 4.3,更简单的方法可能是:编辑/重构/转换为objective-C ARC,然后检查您不想转换的文件 . 我发现这种方式与使用上面的编译器标志相同 .
这是使单个文件非弧的非常简单的方法 .
请遵循以下步骤:
在单个文件上禁用ARC:
选择你想要的.m文件使其成为NON-ARC PRESS ENTER键入 -fno-objc-arc
非ARC文件到ARC项目标志: -fno-objc-arc
ARC文件到非ARC项目标志: -fobjc-arc
-fobjc-arc
注意:如果你想 disable ARC for many files ,你必须:
打开"Build phases" - > "Compile sources"
选择文件 "left_mouse" + "cmd" (用于分隔文件)或 + "shift" (用于分组文件 - 选择第一个和最后一个)
按"enter"
粘贴 -fno-objc-arc
再次按"enter"
利润!
只需在 Build Phases > Compile Sources 中使用 -fno-objc-arc 标志
Build Phases
Compile Sources
选择Xcode项目
转到目标
选择构建阶段部分
在构建阶段部分中选择编译源 .
选择您不想禁用ARC的文件并添加-fno-objc-arc
可以为Xcode中的特定文件禁用ARC(自动引用计数) .
Select Target -> Build Phases -> Compile Sources -> Select File (double click) -> Add "-fno-objc-arc" to pop-up window.
我在使用“可访问性”文件时遇到过这种情况 .
如下图所示:
对构建阶段中的每个文件使用-fno-objc-arc
这个video中解释的四个强制性步骤
//1. Select desired files //2. Target/Build Phases/Compile Sources //3. Type -fno-objc-arc //4. Done
请按照屏幕截图进入 -fno-objc-arc .
如果您需要在Xcode中更改此设置,则可以在Unity内部的特定文件的元数据中应用编译标记 . 只需在“项目”面板中选择它们,然后从“检查器”面板中应用它们 . 如果您计划使用Cloud Build,这一点至关重要 .
添加标志“-fno-objc-arc” .
简单的按照步骤:应用程序>目标>构建阶段>编译源>在类“-fno-objc-arc”之后添加标志
我认为所有其他答案都解释了如何禁用MRC(手动参考计数)和启用ARC(自动参考计数) . 要使用MRC(手动引用计数),即在MULTIPLE文件上禁用ARC(自动引用计数):
按ENTER键
类型-fobjc-arc
按Enter或完成
只需在您不希望应用ARC的文件的构建阶段>编译源中使用-fno-objc-arc标志 .
选择项目 - >目标 - >构建阶段 - >编译器源
选择文件 - >编译器标志
添加-fno-objc-arc
转到App - >然后Targets - > Build Phases - > Compile Source
现在,选择要在其中禁用ARC的文件
粘贴此片段“-fno-objc-arc”粘贴后按ENTER键
在要禁用ARC的每个文件中 .
按照步骤启用禁用ARC
选择Xcode项目转到目标选择构建阶段部分在构建阶段部分中选择编译源 . 选择您不想禁用ARC的文件并添加-fno-objc-arc
18 回答
通过为这些文件添加
-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
Disable ARC 在 MULTIPLE files:
在Xcode中的Target / Build Phases / Compile Sources中选择所需的文件
PRESS ENTER
类型 -fno-objc-arc
按 Enter 或 Done
;)
对于Xcode 4.3,更简单的方法可能是:编辑/重构/转换为objective-C ARC,然后检查您不想转换的文件 . 我发现这种方式与使用上面的编译器标志相同 .
这是使单个文件非弧的非常简单的方法 .
请遵循以下步骤:
在单个文件上禁用ARC:
在Xcode中的Target / Build Phases / Compile Sources中选择所需的文件
选择你想要的.m文件使其成为NON-ARC PRESS ENTER键入 -fno-objc-arc
非ARC文件到ARC项目标志:
-fno-objc-arc
ARC文件到非ARC项目标志:
-fobjc-arc
注意:如果你想 disable ARC for many files ,你必须:
打开"Build phases" - > "Compile sources"
选择文件 "left_mouse" + "cmd" (用于分隔文件)或 + "shift" (用于分组文件 - 选择第一个和最后一个)
按"enter"
粘贴
-fno-objc-arc
再次按"enter"
利润!
只需在
Build Phases
>Compile Sources
中使用-fno-objc-arc
标志选择Xcode项目
转到目标
选择构建阶段部分
在构建阶段部分中选择编译源 .
选择您不想禁用ARC的文件并添加-fno-objc-arc
可以为Xcode中的特定文件禁用ARC(自动引用计数) .
Select Target -> Build Phases -> Compile Sources -> Select File (double click) -> Add "-fno-objc-arc" to pop-up window.
我在使用“可访问性”文件时遇到过这种情况 .
如下图所示:
对构建阶段中的每个文件使用-fno-objc-arc
这个video中解释的四个强制性步骤
请按照屏幕截图进入 -fno-objc-arc .
如果您需要在Xcode中更改此设置,则可以在Unity内部的特定文件的元数据中应用编译标记 . 只需在“项目”面板中选择它们,然后从“检查器”面板中应用它们 . 如果您计划使用Cloud Build,这一点至关重要 .
添加标志“-fno-objc-arc” .
简单的按照步骤:应用程序>目标>构建阶段>编译源>在类“-fno-objc-arc”之后添加标志
我认为所有其他答案都解释了如何禁用MRC(手动参考计数)和启用ARC(自动参考计数) . 要使用MRC(手动引用计数),即在MULTIPLE文件上禁用ARC(自动引用计数):
在Xcode中的Target / Build Phases / Compile Sources中选择所需的文件
按ENTER键
类型-fobjc-arc
按Enter或完成
只需在您不希望应用ARC的文件的构建阶段>编译源中使用-fno-objc-arc标志 .
选择项目 - >目标 - >构建阶段 - >编译器源
选择文件 - >编译器标志
添加-fno-objc-arc
转到App - >然后Targets - > Build Phases - > Compile Source
现在,选择要在其中禁用ARC的文件
粘贴此片段“-fno-objc-arc”粘贴后按ENTER键
在要禁用ARC的每个文件中 .
按照步骤启用禁用ARC
选择Xcode项目转到目标选择构建阶段部分在构建阶段部分中选择编译源 . 选择您不想禁用ARC的文件并添加-fno-objc-arc