【发布时间】:2016-05-24 05:50:34
【问题描述】:
class Base: UIViewController {
var rightButtonColor: UIColor = UIColor.blueColor()
}
class SecondViewController: Base {
override var rightButtonColor: UIColor {
return UIColor.redColor()
}
}
我收到一个错误:
使用 Objective-C 选择器的“rightButtonColor”获取器 'rightButtonColor' 与来自的 'rightButtonColor' 的 getter 冲突 具有相同 Objective-C 的超类“Base” 选择器
【问题讨论】:
-
您根本无法用只读属性覆盖读写属性。 OOP 的一个关键规则是您始终可以将子类传递给任何期望其超类的东西。对于期望超类的东西,您的属性是可读写的——但如果您传入子类,则不是。请注意,如果您反转此示例(尝试使用读写属性覆盖只读属性),它会起作用(尽管您的读写属性必须是计算出来的,因为您不能在覆盖)。