Xcode 为什么cocoa touch主功能模板是这样的?

Xcode 为什么cocoa touch主功能模板是这样的?,xcode,cocoa-touch,Xcode,Cocoa Touch,随着ARC的出现,xcode中出现了一个新的主函数模板,这使它更有意义。但是,我有一个关于旧模板的问题 众所周知,XCode中用于Cocoa touch应用程序的旧主功能模板是: int main(int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, nil);

随着ARC的出现,xcode中出现了一个新的主函数模板,这使它更有意义。但是,我有一个关于旧模板的问题

众所周知,XCode中用于Cocoa touch应用程序的旧主功能模板是:

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);
}
是不是因为人们会以此为例,而不会正确地释放他们的自动释放池?还是因为它会使静态分析仪跳闸?或者别的什么


这个问题可能太开放了,所以我会用另一种方式问。像苹果那样使用模板有技术上的原因吗?

不是一个很好的答案,但如果你真的尝试你的例子,你会得到一个
未使用的变量
警告,这会有点松懈,给每个人一个新创建的项目的警告。

事实上,这个答案很好!“防止编译器警告”是完全可以接受的。我会等一等,看看是否有其他人加入,但如果没有,我会很乐意接受这个。只是想一想:当你说“UIApplicationMain从不返回[a值]”时,你不是自相矛盾吗?你建议返回UIApplicationMain,即使主函数需要返回一个int?