objective-c - XCode 4.2 编译器错误

标签 objective-c xcode llvm

当我使用 XCode 4.2(例如单 View iOS 应用程序)创建新项目时,“支持文件”文件夹中的 main.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;
}

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

没有@autoreleasepool...

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

最佳答案

回答你的第一个问题:

Which Setting in my Xcode can cause such troubles?

编译器本身就是设置。改成 LLVM 3.0 就没问题了

回答你的第二个问题:

Why is the standard compiler for new projects the Apple 3.0LLVM instead of the system default compiler (GCC4.2)??

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

我认为您实际上问的是在不使用 LLVM 3.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;
}

关于objective-c - XCode 4.2 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6381764/

相关文章:

iphone - 保存和加载单个值,iPhone

ios - 如何在ios中正确检查可更新的应用程序订阅的过期时间

objective-c - 为什么我的 CGAffineTransformMakeTranslation 在 iOS 7 上不起作用?

iphone - 为 iPhone 应用程序制作手册的最简单和最快的方法是什么?

c - 使用 LLVM : Unknown token in expression 的 intel 语法内联汇编

c++ - 如何逐行解析LLVM IR

c++ - 为什么模板函数没有出现在 LLVM-IR 中?

objective-c - 符号化 iPad 崩溃日志后回溯仍然不可读

objective-c - 隐藏在 Lion 中的滚动条。如果人们不使用触控板,他们如何水平滚动?

iphone - 在 Storyboard 中编辑自定义 UIView 子类