1

iOS が UINavigationController スタックを処理する方法に関する決定的な情報を持っている人はいますか? ユーザーはドリルダウンを続けることができます。以前のコントローラーの状態を保存することで、実際にメモリを解放し始めますか?

これは以前にここで尋ねられましたが、答えは矛盾していました.

そうでない場合、これを処理するサブクラスを知っている人はいますか?

4

1 に答える 1

1

基本的に、コントローラーの実装に依存します。

コントローラをナビゲーション コントローラに押し続けると、最終的にメモリが少なくなります。ただし、ナビゲーション コントローラーでプッシュしたコントローラーは、メモリが少なくなっても解放されません。

コントローラーは、コントローラーのdidReceiveMemoryWarningメソッドで処理される通知を受け取ります。そこで、コントローラーで使用されている不要になったすべてのオブジェクトを解放したり、コントローラーがポップバックされたときに再作成したりできます。

メモリは iOS の重要なリソースであり、View Controller は重要なときにメモリ フットプリントを削減するための組み込みサポートを提供します。UIViewController クラスは、不要なメモリを解放する didReceiveMemoryWarning メソッドを通じて、メモリ不足状態の自動処理を提供します。

iOS 6 より前では、メモリ不足の警告が発生したときに、後で再読み込みまたは再作成できることがわかっている場合、UIViewController クラスはそのビューを消去していました。これが発生した場合は、viewWillUnload メソッドと viewDidUnload メソッドも呼び出して、ビュー階層に関連付けられているすべてのオブジェクトの所有権を放棄する機会をコードに与えます。これには、nib ファイルからロードされたオブジェクト、viewDidLoad メソッドで作成されたオブジェクト、および作成されたオブジェクトが含まれます。実行時に遅延してビュー階層に追加されます。iOS 6 では、ビューがパージされることはなく、これらのメソッドが呼び出されることもありません。メモリが少ないときにView Controllerが特定のタスクを実行する必要がある場合は、didReceiveMemoryWarningメソッドをオーバーライドする必要があります。

于 2013-10-19T16:32:58.050 に答える