Quando si ignora la funzione noise
, la funzione viene sostituita da quella nuova. Ma quando sovrascrivo una proprietà con un osservatore, il vecchio e il nuovo valore vengono entrambi eseguiti.Ignora osservatore proprietà
nel parco giochi:
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)")
}
}
uscita:
var oldTrain = Train()
bulletTrain.noise("tjoek tjoek") // Prints: "A train does: tjoek tjoek"
Ma quando faccio lo stesso con una proprietà con un osservatore:
nel parco giochi:
class Foo {
var something: Int! {
didSet {
println("vroom")
}
}
}
class Bar: Foo {
override var something: Int! {
didSet {
println("toot toot")
}
}
}
Uscita:
var foobar = Bar()
foobar.something = 3 // Prints: "vroom" & "toot toot"
Quindi, come posso eseguire l'override di una proprietà con un osservatore e come impedire che i vecchi valori vengano eseguiti anche?
Non sembra possibile impedire l'esecuzione del vecchio osservatore delle proprietà. – mrahmiao
è incredibile non è possibile sovrascrivere 'didSet' – Fattie