2012-04-28 50 views
3

随着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的方式使用该模板是否存在技术原因?

+0

只是一个想法:当你说“UIApplicationMain永远不会返回[值]”,你是不是自相矛盾,你建议返回UIApplicationMain,即使主函数需要返回一个int值? – pasawaya 2012-07-26 06:01:09

回答

1

不是一个很好的答案,但如果你真的尝试你的例子,那么你会得到一个Unused variable警告,这将是一个有点松懈,给每个人一个新创建的项目的警告。

+0

其实,这个答案很好! “防止编译器警告”是完全可以接受的。我会稍等一下,看看是否有其他人进来,但如果没有,我会高兴地接受这一个。 – borrrden 2012-04-28 15:37:14