在 Cocoa 中,建议始终调用超类的指定初始化程序。假设在对象初始化期间总是会调用 init 是否安全,即使对象没有使用 init 进行初始化?
例如,假设有一个类:NSThingie
,它可以像[[NSThingie alloc] initWithFoo: foo]
, 或一样初始化[[NSThingie alloc] initWithFoo: foo andBar: bar]
。如果我重写 init,我可以假设它会在初始化期间的某个时候被调用吗?
编辑
也许我最初的问题措辞不太好。我知道重写 init 会导致超类中的 init 不被调用,我必须显式调用 init。我想知道的是,在苹果框架中,[NSObject init]
是否总是被调用。如果我初始化一些 Apple 对象[[NSAppleClass alloc] initWithSomething: something]
,我可以假设 NSObject 的 init 最终会在 NSAppleClass 的初始化过程中被调用吗?