为什么我看到有关NSAutoreleasePool不可用的消息警告?

时间:2012-01-14 16:59:10

标签: iphone ios xcode

我知道为什么会收到这些消息:

  

NSAutoreleasePool不可用:自动参考不可用   计数模式

     

ARC禁止发布'release'

的显式消息

在此代码中:

#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;
}

3 个答案:

答案 0 :(得分:7)

这是因为您正在使用自动引用计数进行编译。您需要在ARC中使用不同的构造:

@autoreleasepool {
    // Your code
}

另一种选择是turn off ARC for a specific file

答案 1 :(得分:7)

是的,您启用了自动引用计数,这不允许您明确使用'release'。您需要禁用ARC或将主方法更改为如下所示:

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

答案 2 :(得分:0)

在targets-&gt; Build settings-&gt; Apple LLVM Complailer 3.0

Objective-C垃圾收集(更改为)支持[-fobjc-gc]