我有一辆车和一个司机。它们相互引用。在汽车的init()中,我创建了一个driver并将其分配给driver成员。驾驶员成员具有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但是,didSet从不触发。为什么?
发布于 2016-04-09 00:21:57
在调用超类初始化器之后,当在子类初始化器中设置属性时,将调用超类属性的willSet和didSet观察器。当一个类设置自己的属性时,在超类初始值设定项被调用之前,不会调用它们。
发布于 2021-04-05 20:24:01
init() {
defer {
driver = GmDriver()
}
}https://stackoverflow.com/questions/29619846
复制相似问题