如果我可以在不使用文件所有者的情况下从nib文件加载对象,那么文件所有者存在的原因是什么?此外,可以在不使用文件所有者的情况下创建插座 – 操作连接.例如,我可以直接从对象到nib进行连接.所以我真的无法理解文件所有者的需要.它与MVC模式有什么关系吗?文件的所有者必须是UIViewController类型吗?
解决方法
在加载nib文件期间,Cocoa生成在nib文件中序列化的每个对象.然后,对于nib文件中的每个连接,它在目标对象上调用setValue:forKey:来创建连接.有些连接是对象nil.那些setValue:forKey:消息被发送到作为文件所有者传递的任何对象.
如果您没有文件所有者,则将忽略nil连接.如果你没有nil连接,那么与没有文件所有者没有什么不同.这不是特别常见.
所有这些都允许您通过将不同的文件所有者传递给加载过程来实例化相同nib文件对象的多个实例.
编辑:
请记住,nib文件只是一堆序列化对象.以编程方式使用initWithNibName:bundle:创建视图控制器时,视图控制器在加载nib文件之前已存在. nib文件中的对象几乎总是希望能够引用该视图控制器.所以我们将视图控制器作为文件所有者传递给UINib.在nib文件说nil的任何地方,UINib将其替换为文件所有者(通常是视图控制器).
这非常灵活,但灵活性不是重点.如果在nib实例化期间没有传入视图控制器,则无法在nib文件中引用视图控制器.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。