我在这Apple's docs中发现了指定初始值设定项的一些信息,但是我不明白的是,每个类都必须有指定初始值设定项吗?是唯一一个?Objective-C类必须有一个指定的初始化程序吗?
例如,如果class A
有initL, initM, initN
,而从class A
class B
继承和具有initX, initY, initZ
。是否有规则说我们不能有initX
致电[super initL]
和initY
致电[super initM]
和initZ
致电[super initN]
?
也就是说,不是所有的“二次初始化”拨打指定初始化,然后将每个指定的初始化将调用[super initFoo]
其中initFoo
是超类的指定初始化,我们不能仅仅有3个主要的初始化,以及每一个呼叫者其相应的超类的3个主要初始化器? (也就是说,这些全部都是从NSObject
继承而来,只是调用self = [super init]
。)
根据[文档](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSCell_Class/Reference/NSCell),“NSCell”甚至有4个指定的初始值设定项。 html%23 // apple_ref/doc/uid/TP40004017):init,initWithCoder,initTextCell和initImageCell: – Monolo 2013-02-22 22:00:24
@Monolo:'initTextCell:'和'initImageCell:'大概调用'[self init]' – 2013-02-22 22:02:21
同意,但是文档明确地将它们列为指定的初始值设定项。不过,我一直在想,这是否是文档中的一个错误。 – Monolo 2013-02-22 22:07:36