Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 子类能否不继承超类';初始值设定项以及何时使用所需的初始值设定项?_Ios_Swift - Fatal编程技术网

Ios 子类能否不继承超类';初始值设定项以及何时使用所需的初始值设定项?

Ios 子类能否不继承超类';初始值设定项以及何时使用所需的初始值设定项?,ios,swift,Ios,Swift,必需的修饰符为: class-SomeClass{ 必需的init(){ //初始化器实现在这里 } } 这意味着子类不必继承超类的初始值设定项。事实上,这意味着如果子类有自己指定的初始值设定项,那么它就不必继承超类的初始值设定项 但是,声明说,每个类都必须至少有一个指定的初始值设定项,该初始值设定项“调用适当的超类初始值设定项以继续超类链上的初始化过程。” 我的问题是: 子类是否可以不继承超类的初始值设定项?如果可以,在什么情况下不继承它是有益的 所需的初始值设定项具体做什么?在什么情况下满

必需的
修饰符为:

class-SomeClass{
必需的init(){
//初始化器实现在这里
}
}
这意味着子类不必继承超类的初始值设定项。事实上,这意味着如果子类有自己指定的初始值设定项,那么它就不必继承超类的初始值设定项

但是,声明说,每个类都必须至少有一个指定的初始值设定项,该初始值设定项“调用适当的超类初始值设定项以继续超类链上的初始化过程。”

我的问题是:

  • 子类是否可以不继承超类的初始值设定项?如果可以,在什么情况下不继承它是有益的
  • 所需的初始值设定项具体做什么?在什么情况下满足初始值设定项继承要求是必要的

  • 试着考虑一下初始化对对象的作用。它为参数设置值,这些参数尚未设置值,但在使用前需要设置值。请参阅:。因此,每个类都需要有一种方法来初始化它,如果需要的话,还需要处理设置变量或沿着子类链传递该职责。required init()函数应作为一种独特的情况使用,在初始化链的某个位置,在一个超类的required init()中计算/设置了一个特殊属性,因此需要在该超类的子类中调用required init()。在这种情况下,您不需要编写所需的重写。

    使用
    super.init()
    而不使用
    required
    修饰符可以获得相同的结果吗?从技术上讲,是的,但是required使其成为必需的,并且在超类被抽象掉或不可见时非常有用