3

我有一个使用 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 禁止发送“释放”的显式消息

但是,当我尝试构建时,它会成功构建。

冲突在哪里?
如何让它使用创建自动释放池的新样式?

4

1 回答 1

2

确保您设置为使用 Clang 编译器(Apple LLVM)而不是 GCC:

在此处输入图像描述

然后将 main.m 与此类似:

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
于 2013-01-20T17:34:22.013 回答