Document Base Applicationで気をつけること

  • 3
    Like
  • 0
    Comment
More than 1 year has passed since last update.

Document Base Applicationを作っていると、まずApplication(NSApplicationのサブクラス)、myDocument(NSDocumentのサブクラス)とWindowControllerのサブクラスをどう協調させていけばいいかに悩みます。

そこで、まずはどういう順番で、どのクラスのどのメソッドが呼ばれるか調べてみました。
結果は以下の通りでした。

  1. Application - init
  2. Application - awakeFromNib
  3. MyDocument - init
  4. MyDocument - makeWindowControllers
  5. WindowController - init
  6. WindowController - awakeFromNib
  7. MyDocument - awakeFromNib
  8. Application - applicationDidFinishLaunching

あとは initawakeFromNibの関係ですが、

  • initは、IBOutletではないインスタンスの初期化メソッド
  • awakeFromNibは、IBOutletとインターフェースビルダーでバインドしたオブジェクトがセットされた後呼び出され、outletの設定・初期化を行うためのメソッド

と、考えておけば良さそうです。
そう考えると、MyDocumnent.xibのFile's OwnerであるMyDocmentクラスが、xibの内部にある各オブジェクトの初期化が終わって、アウトレットとのバインドが終わるまでawakeFromNibが呼ばれない事に辻褄が合います。