代码之家  ›  专栏  ›  技术社区  ›  Pablo

对NIB文件感到困惑

  •  2
  • Pablo  · 技术社区  · 15 年前

    我知道NIB文件是序列化对象,它们有所有者和连接的出口。 我使用xcode导航窗口模板创建了应用程序,它按顺序创建了2个NIB文件——主窗口和第二视图。我不明白主窗口是如何指SecondView的,据我所见,这两者之间没有任何联系。secondview的所有者是uiviewcontroller,在主窗口中有一个导航选项卡,也是uiviewcontroller。但是他们在ib中是如何连接的,我不明白…

    我也不明白是谁 通知主窗口的所有者 对象及其所在位置 保留,变量在哪里 UIApplication myApp = [[UIApplication alloc] init] .

    这是自我回答: UIApplicationMain 为了获得实例变量,我需要在某个地方创建出口。

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

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

    抱歉,我一直在阅读大量关于NIB文件的文章和文档,但仍然很混乱。

    2 回复  |  直到 15 年前
        1
  •  1
  •   hooleyhoop    15 年前

    当应用程序启动时,将加载mainwindow.xib。

    打开主窗口。xib。确保您在列表视图中。您应该看到 ui导航控制器 . 在里面你应该看到一个 ui视图控制器 . 选择视图控制器实例并查看Inspector面板。您应该看到它有一个属性“nib name”,该属性设置为“rootviewcontroller”。因此,viewcontroller将在运行时查找并加载“rootviewcontroller”NIB。

    因此,如果您创建了10个NIB,您将负责反序列化,但是接口生成器有方法帮助您通过在单个NIB文件中打包视图来保持NIB的小规模和可管理性。

        2
  •  0
  •   Unicorn    15 年前

    我不确定我能正确理解你所有的问题。但是,当加载应用程序时,会加载主窗口NIB。您可以从项目的info.plist中验证这一点。您将在那里找到主NIB文件的名称。由于主NIB是在应用程序加载时加载的,所以对象的所有者是应用程序的实例。