を使用してiPhoneプロジェクトを行ってARC
います。アプリケーションは、 を使用したナビゲーション ベースのアプリケーションですUINavigationController
。
典型的な使用例は、「メイン」UIViewController
から「セカンダリ」にUIViewController
複数回、おそらく最大 100 回移動することです。セカンダリ コントローラーには、多くの静的なローカル PNG 画像があり、一部は繰り返されます。
アプリケーションのプロファイリングを行っていますが、「メイン」コントローラーから「セカンダリ」コントローラーに移動すると、約 0.8 MB が割り当てられますが、[戻る] ボタンを押してもメモリが解放されないことがわかります。そのため、セカンダリ コントローラに再び移動すると、他の 0.8 MB が割り当てられます...
viewDidUnload:
デバッグ中に、セカンダリのメソッドが呼び出されていないことに気付きUIViewController
ましたが、コントローラーによって保持されている参照を nil に設定する必要があるのはそのメソッドであることも読みました。viewDidDisappear:
戻るボタンを押したとき、つまりスタックからコントローラーをポップしたときにのみ発生させたいため、これは役に立ちません (メソッドviewDidDisappear:
は、スタック上の別のコントローラーをプッシュするときにも呼び出されます)。
質問は次のとおりです。それをしなければならない場所はありますか?そのメソッドを強制的に呼び出すことはできますか? その動作は問題ありませんか (プロファイリング、"main" -> "secondary" -> "main" -> "secondary" -> ...) のいくつかのサイクルの後、割り当ては 20MB に達しました ??
よろしくお願いします