什么是Swift中需要的初始化程序?

Dou*_*ith 14 initialization swift

我在这个答案中看到用户指定了一个convenience required init().这到底是什么意思?

我知道该required关键字用于覆盖超类的指定初始值设定项,但convenience required声明的做法是什么?

Dan*_*sko 23

一个方便的初始化程序是一个初始化程序,它强制执行所有子类,但不是指定的初始化程序.这意味着所述初始化器最终将在其初始化链中调用指定的初始化器.

指定的初始化者

指定的初始化程序是类的规范初始化程序,以及所有必需和便利初始化程序应调用的初始化程序.该文件说:

指定的初始值设定项是类的主要初始值设定项.指定的初始化程序完全初始化该类引入的所有属性,并调用适当的超类初始化程序以继续超类链的初始化过程.

便利初始化者

便捷初始化器是一种初始化器,可以方便地在类上设置某些配置信息.文档:

便利初始化程序是次要的,支持类的初始化程序.您可以定义一个便捷初始值设定项,以便从与便捷初始化程序相同的类中调用指定的初始值设定项,并将某些指定的初始值设定项参数设置为默认值.您还可以定义一个便捷初始值设定项,以便为特定用例或输入值类型创建该类的实例.

如果您的班级不需要,您不必提供便利初始化程序.只要通用初始化模式的快捷方式可以节省时间或使类的初始化意图更清晰,就可以创建便利初始化程序

必需的初始化程序

必需的初始值设定项可以被认为是父接口和后续子类之间的绑定契约.它是您强制执行所有孩子都知道并实施一组初始化程序的方法.

在定义类初始值设定项之前编写必需的修饰符,以指示该类的每个子类都必须实现该初始化程序:

  • 这意味着(1)初始化器本身不是指定的初始化器,并且(2)子类是实现该初始化器所必需的. (3认同)