我们都知道,一旦我们在 View 或其 ViewController 中放置一个出口,它就会被标记为未包装,我们都知道 Swift 想要在初始化阶段初始化所有属性,这就是我们给任何问我们的人的句子第一次为什么一个出口总是带有感叹号。
今天我试图理解为什么来自 XIB 的对象不能在initWithCoder:
方法中初始化。
据我所知,XIB 文件仅包含有关使用 XML 文件结构在 XIB 内部绘制的对象的所有信息。所以我们在 XIB 文件中看到的内容将被归档并存储到一个文件中。
当我们调用UINib
loadNibNamed:owner:options:
类方法时,它将解压之前创建的对象,查找所有属性,设置它们并将消息发送awakeFromNib
给对象......
但是由于那个感叹号上写着“在初始化阶段我无法初始化你”,我上面所说的应该是不正确的。但是为什么呢?有人能告诉我为什么 Nib 不能初始化并且应该标记为可选吗?
在这里,我有一些来自 Apple 的文档对我没有帮助 https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html