我有一辆车和司机。它们相互引用。在汽车的init()中,我创建一个驱动程序并将其分配给驱动程序成员。驱动程序成员具有doSet方法,该方法应该设置驾驶员的车,从而将它们彼此相互连接起来。
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从不触发。为什么?
Apple Documentation:
The willSet and didSet observers of superclass properties are called when a property is set in a subclass initializer,after the superclass initializer has been called. They are not called while a class is setting its own properties,before the superclass initializer has been called.