6

を使用してiPhoneプロジェクトを行ってARCいます。アプリケーションは、 を使用したナビゲーション ベースのアプリケーションですUINavigationController

典型的な使用例は、「メイン」UIViewControllerから「セカンダリ」にUIViewController複数回、おそらく最大 100 回移動することです。セカンダリ コントローラーには、多くの静的なローカル PNG 画像があり、一部は繰り返されます。

アプリケーションのプロファイリングを行っていますが、「メイン」コントローラーから「セカンダリ」コントローラーに移動すると、約 0.8 MB が割り当てられますが、[戻る] ボタンを押してもメモリが解放されないことがわかります。そのため、セカンダリ コントローラに再び移動すると、他の 0.8 MB が割り当てられます...

viewDidUnload:デバッグ中に、セカンダリのメソッドが呼び出されていないことに気付きUIViewControllerましたが、コントローラーによって保持されている参照を nil に設定する必要があるのはそのメソッドであることも読みました。viewDidDisappear:戻るボタンを押したとき、つまりスタックからコントローラーをポップしたときにのみ発生させたいため、これは役に立ちません (メソッドviewDidDisappear:は、スタック上の別のコントローラーをプッシュするときにも呼び出されます)。

質問は次のとおりです。それをしなければならない場所はありますか?そのメソッドを強制的に呼び出すことはできますか? その動作は問題ありませんか (プロファイリング、"main" -> "secondary" -> "main" -> "secondary" -> ...) のいくつかのサイクルの後、割り当ては 20MB に達しました ??

よろしくお願いします

4

1 に答える 1

1

ARC は、コードを削減し、内部でメモリを管理するために使用されます。詳細については、以下のチュートリアルを参照して、概念をより簡単に理解できるようにしてください。

Objective-C での自動参照カウントについて

これがあなたの助けになることを願っています。

于 2012-05-22T10:18:40.970 に答える