Objective c XCode 4.2编译器错误

Objective c XCode 4.2编译器错误,objective-c,xcode,llvm,Objective C,Xcode,Llvm,当我使用XCode 4.2(例如单视图iOS应用程序)创建新项目时,“支持文件”文件夹中的主.m文件如下所示: #import <UIKit/UIKit.h> #import "iiiAppDelegate.h" int main(int argc, char *argv[]) { int retVal = 0; @autoreleasepool { retVal = UIApplicationMain(argc, argv, nil, NSStringFr

当我使用XCode 4.2(例如单视图iOS应用程序)创建新项目时,“支持文件”文件夹中的主.m文件如下所示:

#import <UIKit/UIKit.h>
#import "iiiAppDelegate.h"

int main(int argc, char *argv[])
{
    int retVal = 0;
    @autoreleasepool {
    retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([iiiAppDelegate class]));
    }

    return retVal;
}
#导入
#导入“iiAppDelegate.h”
int main(int argc,char*argv[])
{
int-retVal=0;
@自动释放池{
retVal=UIApplicationMain(argc、argv、nil、NSStringFromClass([iiiAppDelegate类]);
}
返回返回;
}
编译器设置(内置设置)是Apple 3.0 LLVM。当我将其更改为GCC4.2或GCC4.2 LLVM时,它显示了main.m的错误

没有
@autoreleasepool


我的Xcode中的哪个设置会导致这样的问题?为什么新项目的标准编译器是Apple 3.0LLVM而不是系统默认编译器(GCC4.2)?

@autoreleasepool
是LLVM 3.0中添加的新功能。使用您尝试过的其他编译器无法工作。

要回答您的第一个问题:

我的Xcode中的哪个设置会导致这样的问题

编译器本身就是设置。将其更改为LLVM 3.0,就不会再有麻烦了

回答你的第二个问题:

为什么新项目的标准编译器是Apple 3.0LLVM而不是系统默认编译器(GCC4.2)

LLVM3.0是Xcode 4.2的系统默认编译器

我认为您实际上要问的是,当不使用LLVM3.0时,如何修复错误。为此,您需要将
@autoreleasepool
替换为
NSAutoreleasePool
,如下所示:

int main(int argc, char *argv[]) {
    int retVal = 0;

    // @autoreleasepool {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([iiiAppDelegate class]));

    [pool drain];
    // }

    return retVal;
}

我如何重置选项,新项目的自动生成代码可以用GCC4.2编译?不确定这是否可行-可能模板就是这样制作的(但没有检查)。这已经接近NDA了,最好在developer.apple.com上查询