UIViewControllerはなにをoverrideすればいいのか

UIViewControllerでViewの読み込みを,サンプルごとにコンストラクタ,LoadView(),またはViewDidLoad()を使うものがあり混乱しています.UIViewControllerのViewの扱いフローをまとめてみます.
Appleのドキュメント, View Controller Programming Guide for iPhoneOS の44ページあたりに書いてあります.

UIViewControllerのViewの扱いは次の3つがあります:

  • Load
  • Appear
  • Disappear

LoadはNIBファイルもしくは実行コードからのViewの読み込み,Appearはビューの描画およびアニメーション,DisappearはViewの非表示および解放です.それぞれの処理について開始/終了時に呼び出されるメソッドがあり:

  • Viewの読み込み
    • public virtual void LoadView();
    • public virtual void ViewDidLoad();
  • Viewの表示およびアニメーション
    • public virtual void ViewWillAppear(bool animated);
    • public virtual void ViewDidAppear(bool animated);
  • Viewの非表示
    • public virtual void ViewWillDisappear(bool animated);
    • public virtual void ViewDidDisappear(bool animated);
  • Viewの解放
    • public virtual void ViewDidUnload();

となります(たぶん).

冒頭のViewをどこで初期化するのが正しいかという疑問ですが,LoadView()でViewのインスタンス作成と追加を行うのが正しそう.Viewを設置したあとのレイアウト調整などはViewDidLoad()で行うのでしょう.

しかしNIBファイルを使わず全てコードで書くならば,ViewがロードされないうちにControllerが破棄されたりしない限りは,コンストラクタでViewをロードしても実行結果は同じでしょう.ただし,実行結果が同じだからといって任意の場所に処理コードを書いてしまうと,どこで処理しているのか分かりにくくなり可読性が落ちます.開発グループで基準(もしくはテンプレート)を決めておくほうがよさそうです.