各iPhoneアプリにはたくさんのオブジェクトがあり、アプリが死ぬまで永遠に生きていきます。それらは、アプリケーションデリゲート、ウィンドウ、メインビューコントローラ、ナビゲーションまたはタブコントローラ、それらのすべてのオブジェクトです。なぜ地球上で貴重なCPUサイクルを使い切る直前にそれらを放つべきですか?私の知る限り、アプリのプロセスは終了するので、ヒープ、一貫性、またはそれもなくなります。アプリケーションを終了する直前にオブジェクトを解放し(したがってオブジェクトを解放する必要があるのはなぜですか?
なぜ私はそれらをリリースする必要がありますか? Appleのデベロッパーマニュアルは、コードサンプルの後ろに(iPhone Development Guideから)好きだと主張しています。それは私が単語で検索した最初の場所ですdeallocNHObject-dealloc方法に関する議論部から
@implementation HelloWorldAppDelegate
@synthesize window;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
MyView *view = [[MyView alloc] initWithFrame:[window frame]];
[window addSubview:view];
[view release];
[window makeKeyAndVisible];
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
:
注アプリケーションが終了するときに、プロセスのメモリを自動的にクリアされるのでをが出口が多いのdeallocメッセージが送信されない可能性のあるオブジェクトすべてのメモリ管理方法を呼び出すよりもオペレーティングシステムがリソースをクリーンアップできるようにするだけで効率的です。このおよびその他の理由により、あなたは
しかしのdeallocのdeallocで希少な資源を管理するべきではありません、アプリケーションが15秒以内にapplicationWillTerminateに反応するのに十分な速さであれば、試料中の方法は、上記の現在の実装で呼び出されます。
もう一度。上記のdeallocメソッドをapp exitスピードで書くのは避けるべきですか?そうしたアプローチに問題はありますか?
Appleのマニュアルはどこにありますか?私は一度に大部分のドキュメントを読んだことがありますが、実際には、いくつかの場所で逆のことを思い出しています。 – Chuck
Appleは、終了時にこれらのクラスのいくつかでdealloc呼び出しを受け取るという保証はありません。したがって、deallocルーチンに保存するコードを配置することは悪いことです。 – mahboudz
なぜそれらのためにdeallocコードを書くのは大変ですか? –