迅速.不再需要初始化



在 swift 中,不再需要像下面这样的初始化,对吗?关于这个话题的讨论很多,但似乎没有明确的答案。提前感谢!!

- (instancetype)init {
    if (self = [super init]) {
    }
    return self;
}

正确 — 有点。

如果你正在为一个类实现一个无参数初始值设定项,并且它是该类的指定初始值设定项(你没有convenience init声明它),不仅不需要调用super和/或分配给 self,而且你不能。初始化链由语言强制执行,因此它为您执行不需要执行的部分。

如果要进行子类化,则实现的任何初始值设定项都必须委托给超类的委托初始值设定项。但是你不赋值给self,你只调用super.init(/*whatever*/)——在类初始化过程中,self的身份是固定的,不能改变。(否则,超类的状态可能会保持未初始化状态。

因为初始值设定项不是 Swift 中的函数/方法,所以它们没有返回值,所以末尾也没有return self。同样,该语言为您完成所需的部分(创建类的实例)——在初始值设定项中,您所做的只是设置类中所需的状态。

有关详细信息,请参阅 Swift 编程语言中的类继承和初始化。

最新更新