疎なドキュメントと密なドキュメント

ドキュメントのカスタマイズでいろいな事が少し解ってきた。そこをもう少し掘り下げてみたいと思う

makeWindowControllersの中で何をすれば良いの?

まず最初に躓いたのが、File's OwnerをNSDocumentのサブクラスにしても、NSWindowControllerのサブクラスにしても、WindowControllerのownerメソッドが返す値は自分自身だったということ。
これはハマりました。
そこで、makeWindowControllersの中で呼び出すべきメッセージをよく調べてみると、 の2種類があるじゃ無いですか。 では、どっちを使ったら良いんだろう?と言うわけで早速実験。
initWithWindowNibName:の場合
ログは割愛しますが、この場合、NSDocumentのメソッドであるはずの、
が、NSWindowControllerのサブクラス内で呼ばれます。
加えて、awakeFromNibもWindowControllerの中で呼ばれます。
そして、NSDocumentのサブクラスでは、上記メソッド群は呼ばれません。
initWithWindowNibName:owner:の場合
この場合は、期待通り(?) 加えて、awakeFromNibが、NSDocumentのサブクラスの 中で呼ばれます。
そして共通で起きること
でもって、どちらの場合も、NSWindowControllerのサブクラスのownerメソッドは、WindowControllerのインスタンス自身を帰します。

と、言うわけで

上の結論を踏まえて、initWithWindowNibName:をどう使い分ければ良いか?というと、
のではないかとおもいます。
そしていずれの場合も
initWithWindowNibName:(owner:)して、addWindowControllerした後に、そのNSWindowControllerのサブクラスにsetDocument:selfでWindowControllerとDocumentの連携をする必要がありそうです。
大体ですが、こんな感じだとわかりました。