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