class GmDriver {
var car: GmCar! = nil
}
class GmCar {
var driver: GmDriver {
didSet {
driver.car = self
}
}
init() {
driver = GmDriver()
}
}
let myCar = GmCar()
println(myCar.driver.car) // nil
但是,didSet永远不会触发。为什么呢?
答案 0 :(得分:37)
在调用超类初始值设定项之后,在子类初始值设定项中设置属性时,将调用超类属性的willSet和didSet观察者。在调用超类初始值设定项之前,类在设置自己的属性时不会调用它们。
答案 1 :(得分:1)
init() {
defer {
driver = GmDriver()
}
}