2

ビューのフィールドのみを更新するようにビュー コントローラーを設定するには、ナビゲーション コントローラーにプッシュされ、ナビゲーション コントローラー ビューからポップされたときにオブジェクトを解放する方法を教えてください。

私の目標は、View Controller の場合です。

  1. ナビゲーション コントローラー スタックでプッシュされた場合にのみ表示を更新する
  2. ナビゲーション コントローラ スタックからポップされるときにデータを解放します
  3. コントローラーを可能な限り再利用します (xib ファイルのロード/アンロードのオーバーヘッドをなくすため)

とのデリゲート メソッドはviewWillBePushed:ありviewWillBePopped:ますか?

ビューの3つのレイヤーがあるとしましょう:

Movies (MovieListController)
   --> Movie Basic Info (MovieInfoController)
        --> Movie Credits (MovieCreditsController)

Movie各映画を表すクラスがあるとします。

ここでUIViewControllerは、プログラムの実行時にそれぞれ 1 つのインスタンスである 3 つの のみが必要です。したがって、同じMovieInfoControllerものを別の映画や同様に再利用できMovieCreditsControllerます。

MovieInfoControllerただし、スタックにプッシュされたときにのみ、ビュー フィールド (タイトル、リリース日など) のみを更新したいと思います。で表示を実装すると、がポップviewWillAppearされた場合でも、強制的にフィールドが更新されます。MovieCreditsController

また、ポップされたとき、および潜在的に大きなオブジェクト (カバー画像など)へのMovieInfoController参照を解放したいと考えています。Movieこのロジックを実装すると、スタックにviewWillDisappearプッシュするときにデータが解放されます。MovieCreditsController

合理性はありますか?私はそれについて間違った方法で進んでいますか?

4

1 に答える 1