我怎么知道我的程序是否启用了ARC?

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)

  • 这意味着我必须使用代码?有没有办法从Xcode看? (3认同)

Ste*_*her 20

如果您只想知道一次您的项目是否有ARC,我建议使用jpalten的答案.如果您希望您的代码仅使用ARC构建,我建议使用qegal.

但是,如果您想知道Xcode在设置中的位置:

  1. 在导航器中选择您的项目.这将打开项目编辑器.
  2. 在项目编辑器中,选择目标.
  3. 在项目编辑器中,单击"构建设置"(如果尚未选中).
  4. 在项目编辑器中,单击搜索框并键入OBJC_ARC.

这将在Build Settings中显示一行,Objective-C Automatic Reference CountingCLANG_ENABLE_OBJC_ARC(取决于您是否显示设置描述或名称).如果设置为YES,则表示已启用ARC.

这是您选择是否使用ARC的目标.请注意,可以使用不同的设置编译每个文件.这不是你问的问题,但是因为我们已经有了三个答案,所以我认为我可能会排在第四位.:)

要查看哪些文件覆盖ARC设置:

  1. 在导航器中选择您的项目.这将打开项目编辑器.
  2. 在项目编辑器中,选择目标.
  3. 在项目编辑器中,单击" 构建阶段"(而不是"构建设置").
  4. 展开Compile Sources构建阶段.

在这里,您可以看到每个文件的编译器标志.具有该设置的文件是否使用ARC将包括-fno-objc-arc-fobjc-arc,分别用于指定MRR或ARC.


jpa*_*ten 5

或者只测试一次,在代码中添加:

NSString* dummy = [[[NSString alloc] init] autorelease];
Run Code Online (Sandbox Code Playgroud)

如果您使用ARC,这应该会引发错误.如果是,ARC已启用,一切正常,您可以再次删除它.