2012-04-28 3 views
3

ARCの黎明期に、xcodeに新しい主なテンプレートが登場しました。しかし、古いテンプレートについて質問があります。なぜこのようなココアタッチの主な機能テンプレートですか?

誰もが知っているように、ココアタッチアプリケーション用のXcodeで古いメイン関数テンプレートは、このしたドキュメントは明確にUIApplicationMainは決して戻らないと述べているので

int main(int argc, char *argv[]) { 

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    int retVal = UIApplicationMain(argc, argv, nil, nil); 
    [pool release]; 
    return retVal; 
} 

しかし、最後の2行は到達不能です。終了時に単にexit()を呼び出すだけです。だから、なぜ、Appleはこのようなテンプレートを選んだのですか?なぜこれだけではないのですか?

int main(int argc, char *argv[]) { 

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    return UIApplicationMain(argc, argv, nil, nil); 
} 

人々がこれを例として取り上げ、自動解放プールを適切に解放しないためですか?静的なアナライザをトリップすることになるからですか?もしかしたら何か?

この質問は余裕があるので、別の方法で質問してください。 Appleが行ったようにテンプレートを使用する技術的な理由はありますか?

+0

"UIApplicationMainは決して[値を返しません]"と言ったときに自分自身と矛盾していませんか?また、main関数がintを返す必要があるのにUIApplicationMainを返すように勧めますか? – pasawaya

答えて

1

実際にあなたのサンプルを試してみるとUnused variable警告が表示されます。これは新しく作成されたプロジェクトで皆に警告を与えるためには少し余裕があります。

+0

実際、この答えは上手です! "コンパイラ警告を防止する"は完全に受け入れられます。他の人が入ってくるかどうか少し調べるつもりですが、もしそうでなければ、私はこれを喜んで受け入れます。 – borrrden

関連する問題