我如何知道我的程序是否启用了ARC?
我使用Xcode项目向导创build了一个支持ARC的项目。 与没有ARC支持的程序相比,我没有注意到任何差异。 有什么提示可以告诉我,如果我的程序支持ARC?
我正在使用XCode 4.2.1 Build 4D502
您可以使用__has_feature
,也许logging项目是否在控制台中有ARC:
#if __has_feature(objc_arc) // ARC is On NSLog(@"ARC on"); #else // ARC is Off NSLog(@"ARC off"); #endif
或者,不要只loggingARC是否打开,如果ARC打开(或closures),请尝试使编译器产生错误,如下所示:
#if ! __has_feature(objc_arc) #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). #endif
如果你只是想知道你的项目是否有ARC,我build议使用jpalten的答案。 如果你想要你的代码只用ARC打造,我build议qegal的。
但是,如果你想知道Xcode的设置在哪里:
- 在导航器中select您的项目。 这将打开项目编辑器。
- 在项目编辑器中,select您的目标。
- 在项目编辑器中,单击生成设置(如果它尚未被选中)。
- 在项目编辑器中,单击search框并键入
OBJC_ARC
。
这会在Build Settings中留下一行显示, Objective-C自动引用计数或CLANG_ENABLE_OBJC_ARC (取决于您是否显示设置描述或名称)。 如果它设置为YES,那么您的ARC已经打开。
这是你的目标selectARC是否被使用。 请注意,每个文件都可以使用不同的设置进行编译。 这不是你问的,但是因为我们已经有了三个答案,所以我想我可能会排第四。 🙂
要查看哪些文件覆盖ARC设置:
- 在导航器中select您的项目。 这将打开项目编辑器。
- 在项目编辑器中,select您的目标。
- 在项目编辑器中,单击“ 构build阶段” (而不是“构build设置”)。
- 展开编译源构build阶段。
在这里,你可以看到每个文件的编译器标志。 设置是否使用ARC的文件将包含-fno-objc-arc或-fobjc-arc ,分别用于指定MRR或ARC。
或者只testing一次,在你的代码中join:
NSString* dummy = [[[NSString alloc] init] autorelease];
如果您使用ARC,这应该会引发错误。 如果是这样,ARC已启用,一切正常,您可以再次删除它。
在构build阶段为所有.m文件添加“-fno-objc-arc”编译器标志