在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