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

Ill*_*lep 1 iphone objective-c automatic-ref-counting

在启用ARC的项目中,是否有一种方法可以在-fno-objc-arc代码中以编程方式添加标记.

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

Nic*_*ood 6

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

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

#if __has_feature(objc_arc)
...
#endif
Run Code Online (Sandbox Code Playgroud)

你可以用这个来提出警告

#warning This file is not ARC compatible, add the -fno-objc-arc tag
Run Code Online (Sandbox Code Playgroud)

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

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

https://gist.github.com/1563325

这提供了一堆宏来使用而不是保留,释放和自动释放方法,以便它们可以自动剥离为ARC构建.有关如何使用它的示例,请查看iRate:

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

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