【问题标题】:Which objects are contained in a Nib file? [duplicate]Nib 文件中包含哪些对象? [复制]
【发布时间】:2016-11-30 16:35:59
【问题描述】:

一开始我以为 nib 只产生子视图(目标对象实例有一个所有者,即视图控制器)。

现在根据我的理解(或误解),当使用插座时,视图控制器(所有者)实际上包含在同一个 nib 文件中。

这是否意味着视图控制器和视图都是由 nib 文件“生成”或实例化的?

谢谢

【问题讨论】:

  • 请不要一遍又一遍地问同一个问题。如果您的第一个问题不清楚,请编辑它。
  • 抱歉,我删除了另一个问题。

标签: xcode nib


【解决方案1】:

一个笔尖由它所包含的任何东西组成,意思是放在那里的任何东西。不过,从您的问题来看,好像您可能会问故事板是如何工作的,因为它们使用您不直接与之交互的笔尖。

在故事板中,每个场景由 两个 nib 组成:一个包含视图控制器,另一个包含视图控制器的视图(及其子视图和其他所有内容)。

在代表视图控制器视图的xib文件中,视图控制器本身只是一个代理对象(文件的所有者);它不是从 nib 生成的,而是在 nib 加载时已经存在(这就是它可以充当文件所有者的原因)。事实上,故事板场景中的第二个 nib 文件也是如此。

【讨论】:

  • 从我刚刚读到的内容,我相信如果你有一个已经存在的对象,你想成为未来的所有者对象,当你创建一个出口连接时,那个已经存在的对象instance 现在将“神奇地”成为 nib 文件的一部分。因此,即使所有者实例不需要 nib 存在,它仍然成为 nib 的一部分,当加载 nib 时,您现在有两个单独的实例,一个是原始所有者对象,但现在它有一个新的引用它拥有的实例的属性。对吗?
  • 没有魔法,它不会成为 nib 文件的一部分。你读过我书中关于所有者和代理的部分吗?我在这里用一张漂亮的图表来解释网点:apeth.com/iOSBook/ch07.html#_outlet_connections
  • 谢谢马特,这张图与我看到的有点不同,我会看一下这张图。非常感谢!
  • 好吧,现在根据我的理解,当加载 nib 时,nib 中的代理所有者对象连接到实际的所有者实例,因为所有者实例已使用“所有者”参数加载了 nib设置为“自我”。从那里,出口的字符串值用于进一步分配从 nib 加载生成的新创建的实例,到所有者类中相应的命名引用变量。谢谢。
猜你喜欢
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多