委托超级类的便利初始化程序

Tob*_*obi 5 initialization delegation swift

为什么不允许从子类中的指定初始化程序委托给其超类的便捷初始化程序?

我很清楚,根据文档,子类中的指定初始值设定项必须委托其超类的指定初始值设定项.

类类型的初始化程序委派

为了简化指定和便利初始化程序之间的关系,Swift对初始化程序之间的委托调用应用以下三个规则:

规则1

指定的初始化程序必须从其直接超类调用指定的初始化程序.

规则2

便捷初始化程序必须从同一个类调用另一个初始值设定项.

规则3

便捷初始化程序必须最终调用指定的初始化程序.

记住这个的一个简单方法是:

  • 指定的初始值必须始终委派.

  • 便利的初始化必须始终委派跨越.

我也理解指定和便利初始化程序之间的区别以及两阶段初始化过程,但是不会调用超类的便利初始化程序,这反过来会导致在同一个超类中调用相应的指定初始化程序(比较图表) )满足整个类层次结构中完全初始化属性的要求?

即使直接调用便捷初始化程序只有很小的好处,我仍然想知道是否有充分理由不允许这样做(例如与继承或覆盖有关)?

先感谢您.


图表:直接调用超类的便捷初始化程序

直接调用超类的便利初始化器.