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