2011-01-28 15 views
1

まず、私の悪い英語のために申し訳ありません。私は質問を説明しようとします:NavigationController Stack

私はRootViewController(ナビゲーションベースのプロジェクト)を持っています。ユーザーがnavigationbarの[戻る]ボタンを選択し、選択した場合はどうなります

NextViewController *nextView = [[NextViewController alloc] initWithNibName:@"NextViewController" bundle:nil]; 
[self.navigationController pushViewController:nextView animated:YES]; 
[nextView release]; 

:ユーザーは、テーブルの行を選択するときに、それはyは次のビューを表示するには、次のん(didSelectRowAtIndexPath)テーブルビューを示しており、行をもう一度繰り返し、これを繰り返しますか?多くの新しいビュー(NextViewControllerのインスタンス)が作成されています(多くのメモリが割り当てられています)。あるいは彼はスタックをナビゲートしているだけですか?

私を助けることができますか?私はそのような方法でメモリを浪費したくない(その場合)。 ありがとう!ユーザーが繰り返し前後にあなたのRootViewControllerからNextViewControllerに切り替わり場合

答えて

1

は、ここに何が起こるかです:あなたdidSelectRowAtIndexPath:方法でNextViewControllerが作成され

  1. alloc D」)。あなたはinitメソッドを呼び出したので、それを解放する責任があります。
  2. nextViewを保持するナビゲーションコントローラスタックにプッシュします。
  3. nextViewがリリースされています。そのため、ナビゲーションコントローラだけが保持されています。
  4. ユーザーがNextViewControllerから戻ると、ナビゲーションコントローラーはそれを解放します。今は何も保持していませんnextView、それでdealloc 'を取得します。メモリが解放されます。

は基本的に、あなたはNextViewControllerあなたのユーザーは(各時間を変更するオブジェクトあるので、あなたは「ただ、スタックをナビゲート」していない)を前後に移動するたびに作成しますが、あなたは漏れていません大量のメモリを使用するか、作成する各コントローラーを保持します。あなたのメモリ使用量はここでは問題ありません。

+0

ありがとうございます。今それは私には明らかです:) – Samui

関連する問題