在Swift中,didSet没有’;从init()调用时不会激发

在Swift中,didSet没有’;从init()调用时不会激发,swift,Swift,我有一辆车和一个司机。它们相互参照。在汽车的init()中,我创建了一个驱动程序并将其分配给驱动程序成员。驾驶员成员有一个didSet方法,该方法用于设置驾驶员的汽车,从而将它们相互链接 class GmDriver { var car: GmCar! = nil } class GmCar { var driver: GmDriver { didSet { driver.car = self } } in

我有一辆车和一个司机。它们相互参照。在汽车的init()中,我创建了一个驱动程序并将其分配给驱动程序成员。驾驶员成员有一个didSet方法,该方法用于设置驾驶员的汽车,从而将它们相互链接

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
然而,迪德塞特从未开火。为什么?

调用超类初始值设定项后,在子类初始值设定项中设置属性时,将调用超类属性的willSet和didSet观察器。在调用超类初始值设定项之前,在类设置自己的属性时不会调用它们


初始化期间不调用属性观察员,请参见“谢谢!”!丢失苹果的文档和搜索stackoverflow真的会让我名誉扫地…@Martinar请补充这一点作为答案,也许?可能是重复的
init() {
    defer {
        driver = GmDriver()
    }
}