3

ARCの夜明けとともに、xcodeの新しいメイン関数テンプレートが登場しました。これははるかに理にかなっています。ただし、古いテンプレートについて質問があります。

誰もが知っているように、Cocoatouchアプリケーション用のXCodeの古いメイン関数テンプレートは次のとおりです。

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

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

ただし、ドキュメントにはUIApplicationMainが返されないことが明確に記載されているため、最後の2行には到達できません。完了すると、exit()を呼び出すだけです。では、なぜAppleはこのようなテンプレートを選んだのでしょうか。なぜこれだけではないのですか?

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