0

实例化对象后,nib 加载代码如何建立与插座的连接?

苹果文档说:

一旦所有对象都被实例化并从存档中初始化,nib 加载代码会尝试重新建立每个对象的出口和相应的目标对象之间的连接。如果您的自定义对象有出口,一个 NSNib 对象会尝试重新建立您在 Interface Builder 中创建的任何连接。它首先尝试使用对象自己的方法建立连接。对于每个需要连接的出口,NSNib 对象会在您的对象中查找形式为 setOutletName: 的方法。如果该方法存在,则 NSNib 对象将调用它,并将目标对象作为参数传递。...

但它是如何确定目标对象的呢?

例如我有一个对象

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

...

@end

而redButton通过IB与窗口上的按钮相连。nib 加载代码将如何建立连接?

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 使用私有类的实例IBConnectionRecordIBOutletConnection为连接建模。

于 2011-04-07T09:58:16.570 回答