我注意到
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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。