2011-10-17 3 views
1

私はnibファイルにビューとカスタムオブジェクトがたくさんあります。これらのオブジェクトの1つはカスタムコントローラオブジェクトです。それはawakeFromNibメソッドです。私はこのすべてのものを保持しているウィンドウにアクセスしたいと思います。この時点でウィンドウを取得する方法はわかりません。ただし、このカスタムオブジェクトにはアウトビューがあります。私は[nameOfViewウィンドウ]を呼び出すことからウィンドウを取得できることを知っていますが、何らかの理由で、この時点で、ビューがnilではなくてもウィンドウに対してnilが返されています。どの時点でウィンドウが非ゼロになるでしょうか?awakeFromNibの後にNSWindowは無しです

nibファイルからロードされたこのカスタムオブジェクトのパラメータとしてウィンドウを渡すと、解放/保持について心配する必要はありますか?どのようにメモリ管理は、このNSWindowでペン先からロードされたオブジェクト内で動作しますか?

+0

あなたのnibファイルにはウィンドウが含まれていますか? –

+0

ウィンドウはプログラムによって作成されます。 – JPC

答えて

2

私が正しくあなたを理解する場合は、ペン先のロード処理中にこれを実行することはできません。

  1. いくつかのコントローラ(のは、マスタコントローラを呼びましょう)そのnibファイルのロードをトリガーします。
  2. awakeFromNibは、カスタムコントローラオブジェクトを含むnibファイル内のオブジェクトに送信されます。
  3. マスターコントローラーはnameOfView(場合によってはカスタムコントローラー経由)への参照を取得し、それをウィンドウのビュー階層に追加します。

自動的にウィンドウのビュー階層にこれらのビューを追加していないビューを含むnibファイルをロードする理由[nameOfView window]戻りnilカスタムコントローラのawakeFromNib実装。ステップ1には、そのnibファイルのロードをトリガーする責任を持つマスターコントローラーがあるので、このマスターコントローラーはビューをウィンドウに追加する責任があると想定します。 nameOfViewがいつウィンドウに追加されたかをカスタムコントローラーが知るように、マスターコントローラーにカスタムコントローラーにメッセージを送信させます。

+0

私はそれを試してみるよ、ありがとう – JPC

関連する問題