0

オブジェクトをインスタンス化した後、nib-loading コードはどのようにアウトレットへの接続を確立しますか?

Apple のドキュメントには次のように記載されています。

すべてのオブジェクトがインスタンス化され、アーカイブから初期化されると、nib ロード コードは、各オブジェクトのアウトレットと対応するターゲット オブジェクトの間の接続を再確立しようとします。カスタム オブジェクトにアウトレットがある場合、NSNib オブジェクトは、Interface Builder で作成した接続を再確立しようとします。最初に、オブジェクト独自のメソッドを使用して接続を確立しようとします。接続が必要なアウトレットごとに、NSNib オブジェクトはオブジェクト内で setOutletName: の形式のメソッドを探します。そのメソッドが存在する場合、NSNib オブジェクトはそれを呼び出し、ターゲット オブジェクトをパラメーターとして渡します。...

しかし、それはどのように対象物を決定するのでしょうか?

たとえば、私はオブジェクトを持っています

@interface Foo: NSObject
{
IBOutlet NSButton *redButton;
}

...

@end

IBを介してウィンドウ上のボタンに接続されたredButton。nib-loading コードはどのように接続を確立しますか?

nibファイルに「接続データ」はありますか?

4

1 に答える 1

0

もちろん、NIB ファイルにはこれらの接続を保存する必要があります。XIB ファイルをテキスト エディターで開くと、すべてのコンセント接続について次のようなスニペットが見つかります。

<object class="IBConnectionRecord">
    <object class="IBOutletConnection" key="connection">
        <string key="label">launchAtLoginCheckBox</string>
        <reference key="source" ref="1001"/>
        <reference key="destination" ref="951818764"/>
    </object>
    <int key="connectionID">72</int>
</object>

したがって、Apple はプライベート クラスのインスタンスを使用して接続をモデル化しているようIBConnectionRecordですIBOutletConnection

于 2011-04-07T09:58:16.570 に答える