在Cocoa中,建议始终调用超类的指定初始值设定项。假设在对象初始化期间始终调用init,即使对象未使用init初始化,是否安全?是否始终调用NSObject init?
例如,如果我们假设有一个类:NSThingie
,它可以初始化为[[NSThingie alloc] initWithFoo: foo]
或[[NSThingie alloc] initWithFoo: foo andBar: bar]
。如果我覆盖初始化,我可以假定它会在初始化过程中的某个时刻被调用吗?
编辑
也许我原来的问题没有措辞这么好。我知道覆盖init会导致超类中的init不被调用,我必须明确地调用init。我想知道的是,在苹果框架中,是否总是调用[NSObject init]
。如果我初始化一些Apple对象,如[[NSAppleClass alloc] initWithSomething: something]
,我是否可以假定在NSAppleClass的初始化过程中最终会调用NSObject的init?
见http://developer.apple.com/library/ios/#documentation/general/conceptual/CocoaEncyclopedia/Initialization/Initialization.html有用的信息 – jrturton 2012-08-13 13:49:07