如何在课堂上要求ARC?

ado*_*oho 9 macros compiler-errors objective-c automatic-ref-counting

我有一个包含ARC代码和非ARC代码的应用程序.当我尝试将非ARC代码编译为ARC时,编译器将捕获.如果在没有ARC的情况下错误地编译ARC代码,如何导致编译时错误/通知?显然,代码将编译.它会泄漏.静态分析仪将解决问题.我宁愿找到一种方法来保留编译指示或在我的ARC代码中定义.

以下内容由Apple定义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
Run Code Online (Sandbox Code Playgroud)

我的C-macro-fu很弱.我该如何使用它?或者,或许有更好的符号可供检查?

PS我问,因为我从可重用的库中构建了很多应用程序.我想确保以正确的方式编译每个文件.

Kri*_*izz 10

以下应该有效:

#if !__has_feature(objc_arc)
#  error Compile me with ARC, please!
#endif
Run Code Online (Sandbox Code Playgroud)

将它放在文件的顶部.