我注意到
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.