2012-02-02 12 views
0

私はアプリで発生する断続的なバグを持っていて、特定のシナリオでメモリ警告をシミュレートすることで、ついにそれを再現することができました。ここに設定があります。モーダルビューコントローラがメモリ警告で切断されましたか?

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

モーダルコントローラ2が画面に表示されている間、私は、メモリ警告をシミュレートする場合、モーダルコントローラ1は却下と下部のナビゲーションコントローラは、そのルートに戻ってすべての方法をポップされます。これはまさに報告されたバグで起こることです。

ユーザーがMC2の完了ボタンを押すと、MC1のデリゲートメソッドが呼び出されます。メモリ警告が発生するとMC1がアンロードされ、deallocされたため、クラッシュします。

私のアプリでは、モーションビューコントローラのチェーンを提示しているナビゲーションコントローラがありますが、メモリ警告を発生させる場所は、アプリケーションのある特定の領域でのみ発生します。

この現象が発生する可能性のあるものはありますか?私は特定のコードサンプルを持っていないので、どのコードが問題を引き起こしているのか分かりません。私はすべてのポインターに感謝します。

答えて

1

メモリ警告が発生した場合、iOSはMC1のビュー(ただしMC1自体は表示しません)を含むすべての不可視ビューをあなたのケースから解放することがあります。あなたはMC1で以下を実装する必要があります。

  • viewDidUnloadまたはMC2を表示する前に、現在の状態を覚えておいてください。
  • (viewDidLoad)には、古い状態があれば復元します。デリゲートメソッドでは
  • を呼び出し、[self view]を呼び出してビューがロードされたらロードします。

また、以下のハックを検討することもできます。 UIViewController prevent view from unloading

関連する問題