随着ARC的曙光在xcode中出现了一个新的主要函数模板,这使得更有意义。但是,我对旧模板有疑问。为什么这样的可可触摸主要功能模板?
殊不知,在XCode中可可触摸应用旧的主函数模板是这样的:
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
不过,最后两行是不可访问,因为文件明确指出,UIApplicationMain不会返回。它只是在完成时调用exit()。那么为什么苹果选择这样的模板呢?为什么不是这个?
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
return UIApplicationMain(argc, argv, nil, nil);
}
这是因为人们会以此为例,而不是正确地释放他们的autorelease池吗?或者因为它会使静态分析仪发生故障?或者其他可能?
这个问题可能太开放了,所以我会以另一种方式提出。按照Apple的方式使用该模板是否存在技术原因?
只是一个想法:当你说“UIApplicationMain永远不会返回[值]”,你是不是自相矛盾,你建议返回UIApplicationMain,即使主函数需要返回一个int值? – pasawaya 2012-07-26 06:01:09