我使用Xcode项目向导创建了一个支持ARC的项目。与没有ARC支持的程序相比,我没有发现任何差异。是否有任何提示可以告诉我我的程序是否支持ARC?
我正在使用XCode 4.2.1 Build 4D502
答案 0 :(得分:26)
您可以使用__has_feature
,也可以在控制台中记录项目是否具有ARC,如下所示:
#if __has_feature(objc_arc)
// ARC is On
NSLog(@"ARC on");
#else
// ARC is Off
NSLog(@"ARC off");
#endif
或者,不是仅仅记录ARC是否已启用,如果ARC打开(或关闭),请尝试使编译器引发错误:
#if ! __has_feature(objc_arc)
#error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
#endif
答案 1 :(得分:19)
如果您只想知道您的项目是否有ARC,我建议使用jpalten的答案。如果您希望您的代码仅使用ARC构建,我建议使用qegal。
但是,如果你想知道Xcode在设置中的位置:
OBJC_ARC
。这将在Build Settings中显示一行, Objective-C自动引用计数或 CLANG_ENABLE_OBJC_ARC (取决于您是否显示设置描述或名称) 。如果设置为YES,则表示已启用ARC。
这是您选择是否使用ARC的目标。请注意,每个文件都可以使用不同的设置进行编译。这是不你问的问题,但是因为我们已经有三个答案,所以我认为我可能会排在第四位。 :)
要查看哪些文件覆盖了ARC设置:
在这里,您可以看到每个文件的编译器标志。具有该设置的文件是否使用ARC将包括 -fno-objc-arc 或 -fobjc-arc ,分别用于指定MRR或ARC。
答案 2 :(得分:5)
或者只测试一次,在代码中添加:
NSString* dummy = [[[NSString alloc] init] autorelease];
如果您使用ARC,这会引发错误。如果是,ARC已启用,一切正常,您可以再次删除它。
答案 3 :(得分:1)
添加" -fno-objc-arc"构建阶段中所有.m文件的编译器标志