【发布时间】:2012-01-12 20:06:12
【问题描述】:
我有一个包含 ARC 代码和非 ARC 代码的应用。当我尝试将非 ARC 代码编译为 ARC 时,编译器会捕获。当我的 ARC 代码在没有 ARC 的情况下错误编译时,如何导致编译时错误/通知?显然,代码将编译。它只会泄漏。静态分析器会发现问题。我宁愿找到一种方法在我的 ARC 代码中留下编译指示或定义。
以下是苹果在objc-api.h中定义的:
/* OBJC_ARC_UNAVAILABLE: unavailable with -fobjc-arc */
#if !defined(OBJC_ARC_UNAVAILABLE)
# if __has_feature(objc_arr)
# define OBJC_ARC_UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode")))
# else
# define OBJC_ARC_UNAVAILABLE
# endif
#endif
我的 C-macro-fu 很弱。我将如何使用它?或者,也许有更好的符号来检查?
附:我问是因为我的大部分应用程序都是从可重用的库中构建的。我要确保每个文件都以正确的方式编译。
【问题讨论】:
标签: objective-c macros compiler-errors automatic-ref-counting