gpt4 book ai didi

swift - 什么是 Swift 中需要的便利初始化器?

转载 作者:IT王子 更新时间:2023-10-29 05:21:03 24 4
gpt4 key购买 nike

我在 this answer 中看到用户指定一个便利需要的init()。这到底是什么意思?

我知道 required 关键字用于覆盖父类(super class)的指定初始化程序,但是 convenience required 声明有什么作用?

最佳答案

需要便利的构造器是强制应用于所有子类但不是指定构造器的构造器。这意味着所述初始化器最终将在其初始化链中调用指定的初始化器。

指定初始化器

指定初始化器是类的规范初始化器,也是所有必需和便利初始化器都应调用的初始化器。 Docs说:

Designated initializers are the primary initializers for a class. Adesignated initializer fully initializes all properties introduced bythat class and calls an appropriate superclass initializer to continuethe initialization process up the superclass chain.

便利初始化器

便利初始化器是一种在类上设置某些配置信息的初始化器……方便地。文档:

Convenience initializers are secondary, supporting initializers for aclass. You can define a convenience initializer to call a designatedinitializer from the same class as the convenience initializer withsome of the designated initializer’s parameters set to default values.You can also define a convenience initializer to create an instance ofthat class for a specific use case or input value type.

You do not have to provide convenience initializers if your class doesnot require them. Create convenience initializers whenever a shortcutto a common initialization pattern will save time or makeinitialization of the class clearer in intent

必需的初始化程序

必需的初始化器可以被认为是父接口(interface)和后续子类之间的绑定(bind)契约。这是您强制所有 child 都知道并实现一组特定初始化程序的方法。

Write the required modifier before the definition of a classinitializer to indicate that every subclass of the class mustimplement that initializer:

关于swift - 什么是 Swift 中需要的便利初始化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26922694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com