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が行ったようにテンプレートを使用する技術的な理由はありますか?