用于了解Xcode 4.3.2中是否启用ARC的宏

Aja*_*jay 10 cocoa objective-c ios xcode4

在同一个文件中我们要编写支持ARC和非ARC的代码.为此需要一些宏.

#ifdef ARC_ENABLED 
NSLog(@" ARC enabled ");
#else
NSLog(@" ARC disabled ");
[self release];
#endif
Run Code Online (Sandbox Code Playgroud)

如何实现这个宏,有没有可用的宏?请告诉我.预先感谢您的支持注意:ARC_ENABLED我刚才写过

Kri*_*dra 27

有一个目标C宏__has_feature,您可以使用它来检查是否启用了弧.

来自Clang语言扩展文档

自动参考计数

Clang为Objective-C中的自动引用计数提供支持,从而无需手动保留/释放/自动释放消息发送.有两个与自动引用计数相关的功能宏:__has_feature(objc_arc)通常表示自动引用计数 的可用性,同时__has_feature(objc_arc_weak) 表示自动引用计数还包括__weak对Objective-C对象指针的支持 .

功能检查宏部分是一个非常好的读取.

你可以像这样使用它..

#if !__has_feature(objc_arc)
    //Do manual memory management...
#else
    //Usually do nothing...
#endif
Run Code Online (Sandbox Code Playgroud)

代码部分从这个答案无耻地复制.