在swift中,不再需要初始化如下所示吗?很多关于这个话题的讨论,但似乎没有明确的答案。在此先感谢!!
- (instancetype)init {
if (self = [super init]) {
}
return self;
}
答案 0 :(得分:1)
正确 - 有点。
如果您正在为某个类实现无参数初始值设定项,并且它是该类的指定初始值设定项(您未声明它convenience init
),那么不仅仅是无需致电super
和/或分配给自己,您无法。初始化链由语言强制执行,因此它为您提供了您不需要执行的部分。
如果要进行子类化,则实现的任何初始化程序必须委托给超类的委托初始值设定项。但是你没有分配给self
,你只需要调用super.init(/*whatever*/)
- 在课程初始化期间,self
的身份是固定的,不能改变。 (否则,超类状态可能会被未初始化。)
因为初始化程序不是Swift中的函数/方法,所以它们没有返回值,所以最后也没有return self
。同样,该语言为您完成了所需的部分(为类创建一个实例) - 在初始化程序中,您所做的就是设置类中所需的状态。
有关详细信息,请参阅 Swift编程语言中的Class Inheritance and Initialization。