我们能否相信在 Objective-C 中,规则是类的指定初始化程序总是被确定调用?或者我们可以说,它应该几乎总是正确的,除了几个例外?例如,对于UIView
,文档说:
初始化框架:
如果您以编程方式创建视图对象,则此方法是 UIView 类的指定初始化程序。子类可以重写此方法以执行任何自定义初始化,但必须在其实现开始时调用 super。
如果您使用 Interface Builder 来设计您的界面,那么当您的视图对象随后从 nib 文件加载时,不会调用此方法。nib 文件中的对象被重构,然后使用它们的 initWithCoder: 方法进行初始化
或者我们可以说,如果是以编程方式,则规则应该始终适用于设计良好的类,但 Interface Builder 有点不同,因为它有点“复活”或以非编程方式构建对象。如果是这样,当我们进行 iOS 编程时,它们是否通常是其他例外?