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

Joh*_*iss 3 iphone xcode ios

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

NSAutoreleasePool不可用:在自动引用计数模式下不可用

ARC禁止"发布"的显式消息发送

在这段代码中:

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

das*_*ght 7

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

@autoreleasepool {
    // Your code
}
Run Code Online (Sandbox Code Playgroud)

另一个选项是为特定文件关闭ARC.


Mic*_*ick 7

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

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