我有一个类(github上的NDTrie),它使用c结构作为其内部结构,通过将fno-objc-arc添加到源文件而不是自动引用计数,用户可以更轻松地在他们的项目中使用它要求用户在该源文件的构建阶段进行设置,有没有办法做到这一点。
每个文件编译器标志以每个项目为基础附加到文件上(要编译为某种形式的机器代码的文件通常会尝试避免元数据)。 如果您想指定该标志并让它更新任何 Xcode 项目中的必填字段,您可以使用 CocoaPods 为您的依赖项编写一个 pod 文件。 让底层工具处理剩下的事情。
不,在这种情况下,不可能根据特征分离部分翻译并更改其标志。
你应该从另一个角度来看待它。 ARC 功能根据当前翻译的编译器标志将所有预处理输入视为启用或未启用 ARC。
最明显的解决方法:
0)减少影响:尽可能隐藏实施
1) 翻译特定条件:使用
__has_feature(objc_arc)
确定您是否正在处理启用 ARC 的翻译 - 如果您使用 clang,则当启用 ARC 时,表达式 __has_feature(objc_arc)
扩展为 1。然后,您可以有条件地使程序的某些部分可见或对其进行不同的注释,具体取决于是否启用 ARC。
2)检测并失败:在剩余的一些情况下,您可以选择:
// >> detect clang or GCC if needed
#if __has_feature(objc_arc)
#error This file cannot be compiled with ARC enabled (+HYPERLINK so you don't get a flooded inbox)
#endif
// << detect clang or GCC if needed