4

我们能否相信在 Objective-C 中,规则是类的指定初始化程序总是被确定调用?或者我们可以说,它应该几乎总是正确的,除了几个例外?例如,对于UIView文档说:

初始化框架:

如果您以编程方式创建视图对象,则此方法是 UIView 类的指定初始化程序。子类可以重写此方法以执行任何自定义初始化,但必须在其实现开始时调用 super。

如果您使用 Interface Builder 来设计您的界面,那么当您的视图对象随后从 nib 文件加载时,不会调用此方法。nib 文件中的对象被重构,然后使用它们的 initWithCoder: 方法进行初始化

或者我们可以说,如果是以编程方式,则规则应该始终适用于设计良好的类,但 Interface Builder 有点不同,因为它有点“复活”或以非编程方式构建对象。如果是这样,当我们进行 iOS 编程时,它们是否通常是其他例外?

4

1 回答 1

4

事实上,使用 Interface Builder 设计的类未归档且未初始化。

归档涉及类未初始化但未归档,因此该initWithCoder:方法负责在使用 Interface Builder 配置的归档属性加载控件时设置控件。

您应该将初始化操作放在awakeFromNib:加载对象后在每种情况下调用的方法中,这样您就可以确保您的初始化语句将被调用。

于 2012-09-22T07:28:42.647 回答