我在我的项目中成功地使用了ARC。但是,我遇到了一些文件(例如,在单元测试和模拟对象中),其中ARC规则现在有点脆弱。我记得我听说有一种方法可以基于每个文件禁用ARC,尽管我找不到这个选项。
这有可能吗?如何基于每个文件禁用ARC?
- stackoverflow.com/questions/30274209/…
通过为这些文件添加-fno-objc-arc编译器标志,可以为单个文件禁用arc。
在目标->构建阶段->编译源中添加编译器标志。必须双击编译器标志下行的右列。您还可以通过按住Cmd按钮选择文件,然后按Enter键打开标志编辑框,将其添加到多个文件中。(请注意,编辑多个文件将覆盖它可能已经具有的任何标志。)
我创建了一个示例项目,其中有一个示例:https://github.com/jaminguy/noarc
有关详细信息,请参阅此答案:禁用某些文件的自动引用计数
- 所以,添加这个标志的地方并不太直观。但是,在Xcode4、构建阶段和编译源代码中,实际上有两列。一个用于文件名,另一个用于该文件的编译标志。在这里输入这个特定的编译器标志。
- 您能指定一个目录,即一个目录中的所有文件吗?对于一个团队呢?
- 没有目录。生成设置中一次只能有一个文件:(
- @卡萨德莫拉,你不能得到足够的支持,这条信息。谢谢您。
- 是的,这是可行的,但是xcode 4.2.1仍然会在编辑器窗口中生成难看的圆弧错误,尽管它最终编译得很好。您可能希望将所有非ARC文件放入静态库,并将其链接到主要目标。
- 我这样做了,但是xcode重构会清除我的标志并在文件中抛出错误。我运行refactor convert to arc,标志就不在了。任何帮助
- @在添加编译器标志后重新启动Xcode,我可以消除ARC错误。
- @卡萨迪莫拉,你可以选择多个文件一次-但不要双击,但点击返回。然后只需添加-fno-objc-arc,它将被添加到所有选定的文件中。编辑刚刚看到下面的答案:(
- 我刚刚注意到我转换为使用ARC的项目中所有源文件的这个标志。不过,我从来没有设过旗。我在谷歌上看到这个页面的时候,我注意到了那个标志的含义。但似乎应用程序仍然使用ARC。有人知道怎么回事吗?我想把旗子移走,但不想弄乱任何东西。
- 应用了这个编译器标志之后,我仍然收到错误。我必须单击产品->清洁,然后才能成功地重建我的项目。
- 谢谢。对于不知道的人,如果在编译源中找不到所需的文件,请按"+"按钮添加文件。
- 除了FNO OBJC ARC还有其他方法吗?
- 关于多个标志的注意事项:使用空格分隔它们。
- 请注意,编辑多个文件将覆盖它可能已经具有的任何标志。
- 在添加了complier标志后,我可以重新启动xcode.and去掉arc。
对多个文件禁用ARC:
在Xcode的目标/构建阶段/编译源中选择所需的文件
按回车
类型-FNO OBJC ARC
按Enter键或Done键
;)
- 谢谢!很长时间以来一直在寻找这个功能。当选定多行时,双击不起作用,但按Enter键则起作用。真奇怪。
- 哇哦。我会用我所有的业力来重新投票。谢谢分享!
- 这似乎不再适用于Xcode4.3.3了。双击或按下所选文件上的Enter键不会显示用于放置-fno ojbc arc标志的对话框,是否有人对此有解决方法?
- 我有4.3.3和现在的4.4 dp7,它仍然工作得很好。尝试重新启动Xcode、重新启动计算机和修复权限。
对于Xcode4.3,更简单的方法可能是:编辑/重构/转换为Objective-C Arc,然后检查不希望转换的文件。我发现这和使用上面的编译器标志是一样的。
这是一个非常简单的方法,使个别文件非弧。
遵循以下步骤:
禁用单个文件上的圆弧:
在Xcode的目标/构建阶段/编译源中选择所需的文件
选择要使其非圆弧的.m文件按回车类型-FNO OBJC ARC
非ARC文件到ARC项目标志:-fno-objc-arc。
ARC文件到非ARC项目标志:-fobjc-arc。
注意:如果要对许多文件禁用ARC,则必须:
打开"构建阶段"->"编译源"
用"鼠标左键"+"Cmd"(分开的文件)或+"shift"选择文件(对于分组文件-选择第一个和最后一个)
按"进入"
粘贴-fno-objc-arc。
再次按"回车"
利润!
只需在Build Phases>Compile Sources中使用-fno-objc-arc标志即可。
选择Xcode项目
进入目标
选择构建阶段部分
在构建阶段部分选择编译源。
选择不想禁用ARC的文件并添加-fno objc arc
可以在Xcode中禁用特定文件的ARC(自动参考计数)。
选择目标->构建阶段->编译源->选择文件(双击)->添加"-fno objc arc"弹出窗口。
我在使用"可访问性"文件时遇到过这种情况。
如下图所示:
在构建阶段为每个文件使用-fno objc arc
本视频中解释的四个强制步骤
1 2 3 4
| //1. Select desired files
//2. Target/Build Phases/Compile Sources
//3. Type -fno-objc-arc
//4. Done |
请按照屏幕截图输入-fno objc arc。
如果您使用的是Unity,那么不需要在Xcode中更改它,您可以在元数据中为特定的文件应用一个编译标志,就在Unity内部。只需在项目面板中选择它们,然后从Inspector面板中应用。如果您计划使用cloud build.,这是非常重要的。
我认为所有其他答案都解释了如何禁用MRC(手动参考计数)和启用ARC(自动参考计数)。要在多个文件上使用MRC(手动参考计数),即禁用ARC(自动参考计数):
在Xcode的目标/构建阶段/编译源中选择所需的文件
按回车
类型-FOBC弧
按Enter键或Done键
添加标志"-fno objc arc"。
简单的操作步骤:应用程序>目标>构建阶段>编译源>类后添加标志"-fno objc arc"
只需在build-phases>compile-sources中使用-fno objc arc标志,在不希望应用arc的文件前面。
选择项目->目标->构建阶段->编译器源
选择文件->编译器标志
添加-FNO OBJC ARC
转到app->then targets->build phases->compile source
现在,选择要在其中禁用ARC的文件
粘贴此代码段"-fno objc arc"粘贴后按Enter键
在要禁用ARC的每个文件中。
执行以下步骤以启用禁用ARC
选择Xcode项目进入目标选择构建阶段部分在构建阶段部分选择编译源。选择不想禁用ARC的文件并添加-fno objc arc
- 为什么打负分。
- 你的回答没有对这个旧问题作任何补充。
- 需要添加什么。如果你知道比提供给我们更好。
- 我没有投你反对票。这只是2011年7月11日5点21分问的这个问题。有太多相同答案的答案没有添加任何有用的信息…我怀疑有人因为这个原因投了你一票…
- 你能简要介绍一下吗?