如何以编程方式为非ARC xcode项目中的特定文件启用ARC?

时间:2014-01-09 15:02:48

标签: ios objective-c xcode automatic-ref-counting

我有一种情况需要在少数非ARC xcode项目中为许多文件启用ARC。我不希望完全转换为ARC,只需要使用arc启用少量文件。

有许多解决方案使用XCode控制台将 -fobjc-arc 标志包含在Compile Sources中的特定文件中。但是我在多个xcode项目中有太多文件要通过XCode单独更改它。

是否有一种方法可以通过编程方式修改构建阶段设置。 我找到了很少的帖子,比如

这两个都是很好的解决方案,但我需要设置一种机制,我可以编写脚本来管理它们。其中一些在服务器上运行,并且生成的xcode被分发给其他人进行测试。

project.pbxproj 代码的操作似乎是最可能的选择。但我不知道该怎么做。

3 个答案:

答案 0 :(得分:2)

如果查看.xcodeproj文件中的.pbxproj文件,可以看到项目中包含的文件。我不确定你想要手动修改标志的深度,但我有一些文件设置了编译器标志。在.pbxproj文件中,它们看起来像这样:

D5298D04170F232900D3B684 /* ASIHTTPRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = FACE22CF15B72C4C00A0A4AD /* ASIHTTPRequest.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };

没有编译器标志的文件如下所示:

D5298D02170F232900D3B684 /* GradientShapeView.m in Sources */ = {isa = PBXBuildFile; fileRef = FACE22C715B6F90000A0A4AD /* GradientShapeView.m */; };

我不知道为什么,但这些编译器标志和文件在该.pbxproj文件中列出了4次。我在项目中有12个文件,并设置了编译器标志,但该文件在该文件中找到48次。

您可以设置文本解析器来运行此文件,并将该标志添加到您希望拥有它们的特定文件中。我不确定你还会在这方面做些什么,但这将是一种将编译器标志添加到特定文件的perl脚本方式。

答案 1 :(得分:2)

如果您想将默认目标保持为非ARC,那么您有两个选择:

  1. 为编译源阶段中的每个ARC文件启用 -fobjc-arc
  2. 为您的ARC文件创建新的静态库目标(并为该目标启用ARC)

答案 2 :(得分:1)

选择要同时启用ARC的所有文件,然后按return / enter。它将打开一个文本框,您可以在其中输入-fobjc-arc,然后将其添加到所有文本框中。