2010-06-10 116 views
2

我知道笔尖文件是序列化的对象,他们有所有者,插座进行连接。 使用XCode导航窗口模板我创建了一个应用程序,它按顺序创建了2个nib文件 - MainWindow和SecondView。我无法理解MainWindow如何引用SecondView,但据我所知,这两者之间没有任何关联。 SecondView的所有者是UIViewController,在MainWindow中有一个导航标签,它也是UIViewController。但它们是如何连接在IB我无法理解......与笔尖文件困惑

此外,我不明白谁是 instanciating主窗口的所有者 对象并在该对象正在 保持,哪里是它是变量 UIApplication myApp = [[UIApplication alloc] init]

这是自我回答:UIApplicationMain并有我需要创建插座的实例变量。

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

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

对不起,没有组织的问题,我一直在阅读大量有关nib文件的文章和文档,但它仍然令人困惑。

回答

1

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

打开MainWindow.xib。确保你在列表视图。您应该看到一个UINavigationController的实例。在里面你应该看到一个UIViewController的实例。选择View Controller实例并查看Inspector Panel。你应该看到它有一个属性“Nib Name”,它被设置为“RootViewController”。因此,viewController将在运行时查找并加载“RootViewController”nib。因此,如果您创建10个笔尖,您负责反序列化,但Interface Builder有办法通过将视图打包在单个笔尖文件中来帮助您保持笔尖小巧且易于管理。

0

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

+0

对不起,令人困惑,我知道它是在应用程序启动过程中加载的,但哪个类是代码的一部分被触发加载? 'main'中唯一可加载它的代码是'UIApplicationMain'函数,那么在那个函数里面有一个代码在读取info.plist然后反序列化那个nib文件? – Pablo 2010-06-10 11:11:59

+0

确定重新阅读Apple的文档后,该部分对我很明显。加载主要的笔尖发生在'UIApplicationMain'中。但是,我无法得到我的问题的第一部分的答案 - 我们如何将'SecondView'链接到'MainWindow'。 – Pablo 2010-06-10 11:21:59