我有一辆车和司机。它们相互引用。在汽车的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.