2

我知道 nib 文件是序列化的对象,并且它们具有所有者、用于建立连接的网点。我使用 XCode 导航窗口模板创建了应用程序,该应用程序按其顺序创建了 2 个 nib 文件 - MainWindow 和 SecondView。我无法理解 MainWindow 是如何引用 SecondView 的,据我所知,这两者之间没有联系。SecondView 的所有者是 UIViewController,在 MainWindow 中有一个导航选项卡,它也是 UIViewController。但他们是如何在 IB 中连接的,我无法理解......

另外我不明白谁在实例化 MainWindow 的所有者对象以及该对象被保存在哪里,变量是 UIApplication myApp = [[UIApplication alloc] init].

这个是自我回答的:UIApplicationMain并且要拥有实例变量,我需要在某处创建出口。

如果我用 UIViewController 所有者创建 10 个 nib 文件,谁会触发它们的反序列化?

如果某个类是 nib 文件的所有者,那么该类的基本职责是什么?是否将 nib 文件反序列化到内存中?

对于杂乱无章的问题,我一直在阅读大量关于 nib 文件的文章和文档,但仍然令人困惑。

4

2 回答 2

1

MainWindow.xib 在您的应用程序启动时加载。

打开 MainWindow.xib。确保您在列表视图中。您应该看到UINavigationController的一个实例。在里面你应该看到UIViewController的一个实例。选择 View Controller 实例并查看 Inspector Panel。您应该看到它有一个设置为“RootViewController”的属性“Nib Name”。因此,viewController 将在运行时查找并加载“RootViewController”笔尖。

因此,如果您创建 10 个 nib,您将负责反序列化,但 Interface Builder 有办法通过将视图打包到单独的 nib 文件中来帮助您保持 nib 的小且易于管理。

于 2010-06-10T13:30:00.680 回答
0

我不确定我是否正确理解了您的所有问题。但是在加载应用程序时会加载 MainWindown(主窗口)笔尖。您可以从项目的 info.plist 中验证这一点。您将在那里找到主要 nib 文件的名称。由于在加载应用程序时加载了主 nib,因此对象的所有者是您的应用程序实例。

于 2010-06-10T11:00:21.213 回答