在Swift中,didSet从init()调用时不会触发,

前端之家收集整理的这篇文章主要介绍了在Swift中,didSet从init()调用时不会触发,前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一辆车和司机。它们相互引用。在汽车的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.

猜你在找的Swift相关文章