@autoreleasepool @ token之前的预期表达式

时间:2012-12-04 17:32:02

标签: objective-c ios automatic-ref-counting nsautoreleasepool

我有一个使用ARC的iOS项目,我收到的错误与我创建应用程序@autoreleasepool的方式有关。

在main.m中,我有一小段代码,以便:

#import <UIKit/UIKit.h>

int main(int argc, char *argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, @"MyAppDelegate");
    }
}

我收到错误消息:
错误:“@”标记之前的预期表达式

但是,如果我恢复到创建自动释放池的旧方式:

#import <UIKit/UIKit.h>

int main(int argc, char *argv[]) {

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

我特别在IDE中收到与ARC相关的各种错误:

  1. NSAutoreleasePool不可用:自动引用计数模式不可用
  2. ARC forbitds'release'的明确消息发送
  3. 但是当我尝试构建时,它会成功构建。

    冲突在哪里?
    如何让它使用创建自动发布池的新方式?

1 个答案:

答案 0 :(得分:2)

确保您已准备好使用Clang编译器(Apple LLVM)而不是GCC:

enter image description here

然后给你写ma​​in.m,类似于:

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}