在结构中,在将属性设置为初始值之前触发初始化失败。
但是,在类中,在设置了所有属性并进行委派之后会触发失败。那是为什么?
为什么结构和类都无法在初始化过程的最后触发初始化失败?
更新
以下是Apple Swift文档中的示例代码:
在以下结构示例中,在初始化任何属性之前触发初始化失败:
struct Animal {
let species: String
init?(species: String) {
if species.isEmpty { return nil }
self.species = species
}
}
在以下类示例中,在设置属性后触发初始化失败:
class Product {
let name: String!
init?(name: String) {
self.name = name
if name.isEmpty { return nil }
}
}
文档继续说明:
但是,对于类,可用的初始值设定项只能在之后触发初始化失败该类引入的所有存储属性都已设置为初始值并且已发生任何初始化程序委派。
为什么在类中,只有在所有属性都设置为初始值(并且发生委托)后才会发生初始化失败?