3

随着 ARC 的出现,xcode 中出现了一个新的 main 函数模板,它更有意义。但是,我对旧模板有疑问。

众所周知,XCode for Cocoa touch applications 中的旧 main 函数模板是这样的:

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);
}

是不是因为人们会以此为例,而不是正确地释放他们的自动释放池?还是因为它会绊倒静态分析器?或者其他可能的东西?

这个问题可能太开放了,所以我会换一种方式问。像 Apple 那样使用模板是否有技术原因?

4

1 回答 1

1

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

于 2012-04-28T15:33:17.763 回答