根據(jù)Swift的構(gòu)造器生成規(guī)則:
如果自定義指定構(gòu)造器,必須在自定義構(gòu)造方法里調(diào)用父類的指定構(gòu)造器键畴;
如果自定義便利構(gòu)造器,必須在自定義的構(gòu)造方法里調(diào)用自己的指定構(gòu)造器。
那么有一種情況担敌,是自定義指定構(gòu)造器的時候,不需要調(diào)用父類的指定構(gòu)造器廷蓉。這種情況什么時候發(fā)生呢全封?
這種情況發(fā)生在當父類沒有任何的指定構(gòu)造器、父類所有的儲存屬性都不在子類重寫苦酱,并且子類重寫的構(gòu)造方法是init()
方法的時候售貌。
請注意三個限制條件:
父類沒有任何的指定構(gòu)造器;
父類的所有儲存屬性都不在子類重寫;
自己重寫的是
init()
方法给猾。
舉個例子疫萤,父類是A,子類是B敢伸。
class A {
var: String = "c"
}
class B: A {
var: String
override init() {
d = "d"
}
}
此時滿足上面所說的條件扯饶,在B類重寫的init()
方法中不需要調(diào)動super.init()
。