Override property observer

Wenn ich die Funktion überschreibenoise, die Funktion wird durch die neue ersetzt. Wenn ich jedoch eine Eigenschaft mit einem Beobachter überschreibe, werden sowohl der alte als auch der neue Wert ausgeführt.

uf dem Spielplatz:

class Vehicle {
    func noise(sound: String) {
        println("Vehicle sound sounds like \(sound)")
    }
}

class Train: Vehicle {
    override func noise(sound: String) {
        println("A train does: \(sound)")
    }
}

Ausgabe

var oldTrain = Train()
bulletTrain.noise("tjoek tjoek") // Prints: "A train does: tjoek tjoek"

Aber wenn ich dasselbe mit einer Eigenschaft mit einem Beobachter mache:

uf dem Spielplatz:

class Foo {
    var something: Int! {
        didSet {
            println("vroom")
        }
    }
}

class Bar: Foo {
    override var something: Int! {
        didSet {
            println("toot toot")
        }
    }
}

Ausgabe

var foobar = Bar()
foobar.something = 3 // Prints: "vroom" & "toot toot"

Wie soll ich also eine Eigenschaft mit einem Beobachter überschreiben und verhindern, dass die alten Werte ebenfalls ausgeführt werden?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage