LoginSignup
4

More than 5 years have passed since last update.

posted at

Document Base Applicationで気をつけること

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が呼ばれない事に辻褄が合います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4