XCode 4.2编译器错误

Ben*_*nny 2 xcode objective-c llvm

当我使用XCode 4.2(例如,单视图iOS应用程序)创建一个新项目时,"支持文件"-Folder中的main.m-File看起来像:

#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;
}
Run Code Online (Sandbox Code Playgroud)

编译器设置(在构建设置中)是Apple 3.0 LLVM.当我将其更改为GCC 4.2或GCC4.2 LLVM时,它显示与main.m的错误.

没有@autoreleasepool......

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

cho*_*own 6

回答你的第一个问题:

我的Xcode中的哪个设置会导致这样的麻烦?

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

回答你的第二个问题:

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

LLVM 3.0 Xcode 4.2的系统默认编译器.

我认为你实际上问的是如何在不使用LLVM 3.0时修复错误.要做到这一点,你会想要替换@autoreleasepoolNSAutoreleasePool这样:

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;
}
Run Code Online (Sandbox Code Playgroud)