2011-11-09 10 views
0

私はiPhoneアプリケーションを持っており、バックグラウンドにあるために仮想の「タイムアウト」が含まれています。バックグラウンドに入ると、私はタイムスタンプを作ります。再入力すると、私は現在の時刻とタイムスタンプを比較します。これはすべて素晴らしいです。UINavigationController全体を解放する方法

私が欲しいのは、アプリケーションが起動されたばかりのように、基本的にリセットすることです。私のアプリケーションのすべてがUINavigationControllerの中にあります。そこで、私はそれをすべて解放してから、すべてを再割り当てし、やり直すことができると思いました。これを行う正しい方法がありますか?私はUINavigationControllerを "リリース"するだけで、内部のすべてのViewControllerがメモリに漏れてしまうような気がします。

答えて

1

UINavigationControllerを放すだけで、があなたのUINavigationControllerによってのみ保持されている場合は、それらも割り当て解除されます。

1

あなたは(手動でモデルデータをリセットして、あなたが欲しいの状態にあなたのコントローラとデータモデルをリセットする必要が賢明な方法でこれを行うには [self.navigationController popToRootViewControllerAnimated:NO];

0

でのアプリの画面を起動するために返すことがあります。たとえば、あなたのアプリがちょうど立ち上げられたかのように)。私はまた、あなたのユーザーにとって自然に見える方法でこれをやります。次のようなものがあります。

  1. メインのアプリケーションウィンドウにスプラッシュスクリーンビュー(または何か一時的なもの)を読み込みます。

  2. ナビゲーションコントローラを解放します(より一般的には、以前にウィンドウに追加されたビューを所有するトップレベルコントローラを解放します)。これは、他のどこにも保持していないと仮定して、関連するすべてのコントローラとビューを解放します。

  3. あなたのアプリがバックグラウンドに入ったときに表示されたモーダルビューも処理する必要があります。アプリがバックグラウンドに入ったときに自動的に閉じたり、アプリが再開してリセットしたときにアプリを終了させたりすることができます。

  4. あなたは

  5. があなたのナビゲーションコントローラを再作成し、ウィンドウに戻ってそれを追加し、一時的なスプラッシュ画面を解放したい状態にあなたのデータモデルをリセットします。

関連する問題