objective-c – 什么问题可能导致将nib文件的所有者设置为nil?
发布时间:2020-12-14 19:22:48 所属栏目:百科 来源:网络整理
导读:如果我可以在不使用文件所有者的情况下从nib文件加载对象,那么文件所有者存在的原因是什么?此外,可以在不使用文件所有者的情况下创建插座 – 操作连接.例如,我可以直接从对象到nib进行连接.所以我真的无法理解文件所有者的需要.它与MVC模式有什么关系吗?文
如果我可以在不使用文件所有者的情况下从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文件中引用视图控制器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |