加载NIB并重新建立连接

时间:2011-04-07 09:50:36

标签: cocoa interface-builder nib outlet

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

Apple文档说:

  

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

但它如何确定目标对象

例如我有一个对象

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

...

@end

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

nib文件中是否有“连接数据”?

1 个答案:

答案 0 :(得分: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的实例来建模连接。