class Base: UIViewController {
var rightButtonColor: UIColor = UIColor.blueColor()
}
class SecondViewController: Base {
override var rightButtonColor: UIColor {
return UIColor.redColor()
}
}
Ich erhalte eine Fehlermeldung:Wie kann ich diese Swift-Eigenschaft überschreiben?
Getter for 'rightButtonColor' with Objective-C selector 'rightButtonColor' conflicts with getter for 'rightButtonColor' from superclass 'Base' with the same Objective-C selector
Sie können einfach nicht eine Lese-Schreib-Eigenschaft mit einer schreibgeschützten Eigenschaft überschreiben. Eine Schlüsselregel von OOP besteht darin, dass Sie immer eine Unterklasse an alles übergeben können, was ihre Oberklasse erwartet. Zu der Sache, die die Oberklasse erwartet, ist Ihre Eigenschaft lesen-schreiben - aber es ist nicht, wenn Sie in der Unterklasse übergeben. Beachten Sie, dass das umgekehrte Beispiel (das Überschreiben einer schreibgeschützten Eigenschaft mit einer Lese-/Schreibeigenschaft) funktionieren würde (obwohl Ihre Lese-/Schreibeigenschaft eine berechnete sein müsste, da Sie keinen Speicher in einer Datei einfügen können) überschreiben). – Hamish