ビューのフィールドのみを更新するようにビュー コントローラーを設定するには、ナビゲーション コントローラーにプッシュされ、ナビゲーション コントローラー ビューからポップされたときにオブジェクトを解放する方法を教えてください。
私の目標は、View Controller の場合です。
- ナビゲーション コントローラー スタックでプッシュされた場合にのみ表示を更新する
- ナビゲーション コントローラ スタックからポップされるときにデータを解放します
- コントローラーを可能な限り再利用します (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
合理性はありますか?私はそれについて間違った方法で進んでいますか?