ios – 为什么Xcode 4.2在main.m中使用@autoreleasepool而不是NSAutoreleasePool?

前端之家收集整理的这篇文章主要介绍了ios – 为什么Xcode 4.2在main.m中使用@autoreleasepool而不是NSAutoreleasePool?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我注意到 Xcode 4.2有一个不同的方式来启动主要功能
int main(int argc,char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc,argv,nil,NSStringFromClass([PlistAppDelegate class]));
    }
}

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

有人知道这两者之间的区别吗?

解决方法

第一个使用ARC,它在iOS5及更高版本中实现,可以为您处理内存管理.

在第二个,您正在管理自己的内存,并创建一个自动释放池来处理在主函数内发生的每个自动释放.

所以在阅读了有关iOS 5的Obj-C新功能之后,看来:

@autoreleasepool {
    //some code
}

工作方式相同

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// some code
[pool release];

不同的是,最后一个会在ARC上抛出一个错误.

编辑:

第一个是使用ARC.

猜你在找的iOS相关文章