use*_*414 15 xcode objective-c ios automatic-ref-counting
我使用Xcode项目向导创建了一个支持ARC的项目.与没有ARC支持的程序相比,我没有发现任何差异.如果我的程序支持ARC,是否有任何提示可以告诉我?
我正在使用XCode 4.2.1 Build 4D502
pas*_*aya 26
您可以使用__has_feature,也许在控制台中记录项目是否具有ARC,如下所示:
#if __has_feature(objc_arc)
// ARC is On
NSLog(@"ARC on");
#else
// ARC is Off
NSLog(@"ARC off");
#endif
Run Code Online (Sandbox Code Playgroud)
或者,不要只记录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
Run Code Online (Sandbox Code Playgroud)
Ste*_*her 20
如果您只想知道一次您的项目是否有ARC,我建议使用jpalten的答案.如果您希望您的代码仅使用ARC构建,我建议使用qegal.
但是,如果您想知道Xcode在设置中的位置:
OBJC_ARC.这将在Build Settings中显示一行,Objective-C Automatic Reference Counting或CLANG_ENABLE_OBJC_ARC(取决于您是否显示设置描述或名称).如果设置为YES,则表示已启用ARC.
这是您选择是否使用ARC的目标.请注意,可以使用不同的设置编译每个文件.这不是你问的问题,但是因为我们已经有了三个答案,所以我认为我可能会排在第四位.:)
要查看哪些文件覆盖ARC设置:
在这里,您可以看到每个文件的编译器标志.具有该设置的文件是否使用ARC将包括-fno-objc-arc或-fobjc-arc,分别用于指定MRR或ARC.
或者只测试一次,在代码中添加:
NSString* dummy = [[[NSString alloc] init] autorelease];
Run Code Online (Sandbox Code Playgroud)
如果您使用ARC,这应该会引发错误.如果是,ARC已启用,一切正常,您可以再次删除它.