14

当我制作一个示例应用程序(即,从一个标签栏应用程序或其他东西开始)时,在我的 MainWindow.xib 文件中,我看到列出了 5 个项目——文件所有者、第一响应者、应用程序代表、窗口和标签栏控制器。

如果我创建另一个 .xib 文件,并为其创建一个委托,并将该文件的所有者设置为我刚刚创建的新委托,我不会在...objects(?) 的列表中看到“NewDelegateFile”。西布。

这对我来说没有意义,我认为这是我没有那么快地追上 iPhone 开发的重要原因。

有没有人愿意花时间向我解释这个小怪癖?

4

1 回答 1

24

File's Owner 不是 xib 文件中的真实对象。它是一个代理对象。它表示加载时将成为 xib 所有者的对象。First Responder 和 App Delegate 也是代理。第一个响应者是当前位于响应者链顶部的对象。当应用程序的状态发生变化时,另一个对象可能是第一响应者。您可以使用此代理对象将诸如 File->Save 菜单之类的内容连接到在任何给定时间负责处理它的任何对象。

App Delegate 是一个实际的对象。加载 xib 时,它会自动恢复。正如您在 Interface Builder 中看到的,它连接到文件所有者的委托出口。应用程序加载 MainWindow.xib,它是文件的所有者。

其他 xib 文件通常通过委托对象加载。该委托对象是文件的所有者。但是委托本身是从代码中实例化的。它不是从 xib 加载的。这就是它没有在 Interface Builder 中显示的原因。

xib 文件包含实际的序列化对象。文件的所有者和第一响应者是例外。它们代表其他一些已经存在的对象。

文件的所有者(通常是非 MainWindow.xib 文件中的 UIViewDelgate)是鸡。xib是鸡蛋。鸡本身不包含在鸡蛋中。

有点长。希望能帮助到你。

于 2009-04-17T21:06:06.597 回答