在 swift 中,不再需要像下面这样的初始化,对吧?关于这个话题有很多讨论,但似乎没有明确的答案。提前致谢!!
- (instancetype)init {
if (self = [super init]) {
}
return self;
}
最佳答案
正确——有点。
如果您正在为一个类实现无参数初始化程序,并且它是该类的指定初始化程序(您没有将其声明为convenience init
),那么不仅不需要调用 super
和/或分配给 self,您不能。初始化链是由语言强制执行的,因此它会为您完成不需要执行的部分。
如果您要子类化,则您实现的任何初始化程序都必须委托(delegate)给父类(super class)的委托(delegate)初始化程序。但你不分配给 self
,你只需调用 super.init(/*whatever*/)
— 在类初始化期间,self
的身份code> 是固定的,不能更改。 (否则父类(super class)的状态可能未初始化。)
因为初始化器不是 Swift 中的函数/方法,所以它们没有返回值,因此末尾也没有 return self
。同样,该语言会为您完成所需的部分(创建类的实例)——在初始化程序中,您所做的就是设置类中所需的状态。
参见Class Inheritance and Initialization有关详细信息,请参见Swift 编程语言。
关于 swift 。不再需要初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29038599/