将标记添加到启用ARC的项目中

时间:2012-01-17 17:45:53

标签: iphone objective-c automatic-ref-counting

在启用ARC的项目中,有没有办法在自己的代码中以编程方式添加-fno-objc-arc标记。

所以我可以将我的源文件提供给其他人,并且该人不需要手动添加-fno-objc-arc

2 个答案:

答案 0 :(得分:6)

我认为这是因为您希望将项目分发为可重用的库,可以在其他项目中使用,无论它们是否使用ARC?

我认为您不能将标志添加到源以告知ARC忽略该文件(至少我还没有找到方法),但您可以检测文件中是否启用了ARC

#if __has_feature(objc_arc)
...
#endif

您可以通过说

来使用它来发出警告
#warning This file is not ARC compatible, add the -fno-objc-arc tag

但更优雅的解决方案是使用此功能在编译时自动分支代码,以便它可以在ARC和非ARC构建上运行。

我编写了一个简单的可重用标头,可以粘贴到源文件的顶部或作为独立的头文件包含在项目中:

https://gist.github.com/1563325

这提供了一堆宏来代替retain,release和autorelease方法,以便可以为ARC构建自动剥离它们。有关如何使用它的示例,请查看iRate:

https://github.com/nicklockwood/iRate/tree/master/iRate

以这种方式转换类文件只需几分钟。

答案 1 :(得分:1)

不 - 不在代码本身。这存储在您的项目文件中,因此如果您将整个项目发送给其他人,它应该可以工作。但是,您只能向他们发送一些课程并完成这项工作(它需要是整个项目)。