我是新来的可可,我不明白的概念File's Owner
一个笔尖的文件。
下面是我会看事情的方式:
考虑一个文件myNibFile.nib
描述一个窗口的外观文件。
现在,我想一个实际的窗口连接到该笔尖文件。 所以,我创建了一个类myWindow
,这是一个子类NSWindowController
。 而且,要做到这一点,我改变init
这样的方法:
-(id)init { [super initWithWindowNibName:@"myNibFile"]; return self; }
所以,我明白,当我创建的实例myWindow
,“系统”会去看看。笔尖文件并创建适当的对象。
所以,我的问题是:
感谢您帮助我更清楚地看到在这些新概念!
要记住两点:
- 该文件的所有者是加载笔尖,即,接收到该消息该对象的对象
loadNibNamed:
或initWithNibName:
- 如果您要访问的任何对象在笔尖加载它之后,你可以设置文件所有者的出口。
所以你创建了大量的按键,子视图等看上图。 加载笔尖从加载对象(通常是视图或窗口控制器)您对这些对象的文件所有者设置网点后,如果你想修改任何这些视图/对象的任何时间。 就这么简单。
这就是为什么在默认情况下所有视图控制器或窗控制器作为文件所有者,并且也有一个出口在笔尖文件主窗口或视图对象:因为咄,如果你控制的东西,你肯定会需要有一个出口,这样你可以发送消息给它。
这就是所谓的文件所有者,并赋予特殊地位的原因,是因为在不同的笔尖其他对象,文件所有者是外部笔尖,是不是它的一部分。 事实上,加载笔尖时只可用。 因此,文件所有者是替身或代理的实际对象稍后将加载笔尖。
希望你明白。 如果你问我会澄清任何观点。
要了解基本的事情是,界面生成器允许您创建自动连接到对方,对你的程序的一部分没有努力的对象。 您可以实例化各种物体包括非观点的人,他们可以是相互关联的; 例如,你可能会认为自己等这一机制的同时创建表视图数据源的实例是常用的主菜单NIB中创建一个应用程序代理。
然而,由于这一切都通过拖放操作完成,似乎是没有办法可以形成任何的NIB对象,并已经在应用程序中存在的物体之间的连接,但有一个例外。
当代码加载NIB文件,你必须明确指定一个对象,笔尖会考虑是“文件的所有者”选项。 这是你Interface Builder中看到里面的占位符; 因为它可以代表你的应用程序中的任何对象,界面生成器无法知道什么样的行动/插座可在其上。 这就是为什么你可以修改文件的所有者的“类”,在属性选项卡。
文件的所有者并没有真正代表“所有权”或“生儿育女”。 它所代表的是“即加载此NIB对象”。
文件的所有者是IB一个占位符等等都在你的代码中的出口和动作是“联”在IB,就可以控制拖动到屏幕上的代码上连接的东西。
文件的所有者在Interface Builder是这样它就知道父的对象类型。 这两种方式使用。 首先,在Interface Builder使IB知道什么出口和动作都可以给你联系。 其次是使用的应用程序框架知道如何一次笔尖文件被加载重新连接东西,你的代码的其余部分。