迅速。不再需要Init?

时间:2015-03-13 17:37:23

标签: swift syntax initialization

在swift中,不再需要初始化如下所示吗?很多关于这个话题的讨论,但似乎没有明确的答案。在此先感谢!!

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

    }
    return self;
}

1 个答案:

答案 0 :(得分:1)

正确 - 有点。

如果您正在为某个类实现无参数初始值设定项,并且它是该类的指定初始值设定项(您未声明它convenience init),那么不仅仅是无需致电super和/或分配给自己,您无法。初始化链由语言强制执行,因此它为您提供了您不需要执行的部分。

如果要进行子类化,则实现的任何初始化程序必须委托给超类的委托初始值设定项。但是你没有分配给self,你只需要调用super.init(/*whatever*/) - 在课程初始化期间,self的身份是固定的,不能改变。 (否则,超类状态可能会被未初始化。)

因为初始化程序不是Swift中的函数/方法,所以它们没有返回值,所以最后也没有return self。同样,该语言为您完成了所需的部分(为类创建一个实例) - 在初始化程序中,您所做的就是设置类中所需的状态。

有关详细信息,请参阅 Swift编程语言中的Class Inheritance and Initialization