Ich habe ein Auto und einen Fahrer. Sie beziehen sich gegenseitig. In der init() des Autos erstelle ich einen Treiber und weise ihn dem Fahrer zu. Der Fahrer hat eine didSet-Methode, die das Auto des Fahrers einstellen soll, damit sie sich gegenseitig verbinden.In Swift wird didset nicht ausgelöst, wenn es von init() aufgerufen wird
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
Das didset wird jedoch nie ausgelöst. Warum?
Eigenschaftsbeobachter werden während der Initialisierung nicht aufgerufen, siehe http://stackoverflow.com/questions/25230780/is-it-possible-to-allow-didset-to-be-during-initialization-in- swift –
Danke! Wenn ich sowohl die Dokumentation von Apple als auch die Suche nach stackoverflow vermisse, sollte das mich abzüglich Reputation verdienen ... – uaknight
@MartinR füge das bitte als Antwort hinzu, vielleicht? –