0

アプリで発生する断続的なバグがあり、特定のシナリオでメモリ警告をシミュレートすることで、最終的に一貫して再現することができました。これがセットアップです。

 Nav controller
 (as tab inside      --> Modal Controller 1 --> Modal Controller 2
 Tab Controller)

モーダル コントローラー 2 が画面に表示されているときにメモリ警告をシミュレートすると、モーダル コントローラー 1 が閉じられ、一番下のナビゲーション コントローラーがルートに戻ります。これはまさに、報告されたバグで起こっていることです。

その後、ユーザーが MC2 で [完了] ボタンを押すと、MC1 のデリゲート メソッドが呼び出されます。これは、メモリ警告によって MC1 がアンロードされ、割り当てが解除されたため、クラッシュします。

アプリには、モーダル ビュー コントローラーのチェーンを提示するナビゲーション コントローラーがある場所が他にもありますが、メモリ警告をトリガーすると、アプリの特定の領域でのみこの問題が発生します。

この動作を引き起こす可能性のあるものはありますか? 問題の原因となっているコードがわからないため、特定のコード サンプルはありません。任意のポインタをいただければ幸いです。

4

1 に答える 1

1

When a memory warning happens, iOS may release any invisible views, including MC1's view (but not MC1 itself) in your case. You need to implement the following in MC1.

  • in viewDidUnload or before showing MC2, remember the current state.
  • in viewDidLoad, restore the old state if any.
  • in delegate method, call [self view] to load the view if it's released.

Or, you may want to consider the following hack. UIViewController prevent view from unloading

于 2012-02-02T23:59:52.363 に答える