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を返すa を明示的に禁止していますvoid。次の 2 つの署名のみが許可されます。

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 に答える