2
#import <UIKit/UIKit.h>
#import "WhereamiAppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([WhereamiAppDelegate class]));
    }
}

在仔细检查 UIApplicationMain 函数后,它指出“尽管声明了返回类型,但此函数永远不会返回”

如果 main 从不返回,为什么它会尝试从该函数返回整数值?

4

1 回答 1

12

Objective C标准是基于C标准的。C 标准明确禁止main返回void. 只允许这两个签名:

int main()
int main(int argc, char **argv)

为了符合这个标准,main必须声明为返回一个整数。返回值无关紧要,但它必须存在(C99 标准允许省略 中的return语句main)。

由于UIApplicationMain永不返回,以下内容也是有效的:

int main(int argc, char *argv[])
{
    @autoreleasepool {
        UIApplicationMain(argc, argv, nil, NSStringFromClass([WhereamiAppDelegate class]));
    }
    // This line is never reached, and C99 standard allows omitting it,
    // so you can safely remove the return statement below:
    return 0;
}
于 2013-05-25T23:16:03.587 回答