我有UIView的一个具体子类实现的协议斯威夫特 - 我怎样才能在一个具体子类
protocol SomeProtocol {
var property : Int
}
extension UIView : SomeProtocol {
var property : Int {
get {
return 0
}
set {
// do nothing
}
}
}
延长我想重写此扩展方法重载的扩展方法:
class Subclass : UIView, SomeProtocol {
var _property : Int = 1
var property : Int {
get { return _property}
set(val) {_property = val}
}
}
我设置了断点,并看到扩展方法被调用,而不是具体的子类方法:
var subclassObject = Subclass()
someObject.doSomethingWithConcreteSubclassObject(subclassObject)
// other code;
fun doSomethingWithConcreteSuclassObject(object : UIView) {
var value = object.property // always goes to extension class get/set
}
我也尝试添加重写,但超类没有此属性 –
Wich Swift版本您使用?在Swift 1.2和Xcode 6.3.1中,当您尝试覆盖_extension_属性时,出现以下编译时错误:“来自扩展的声明不能被覆盖”,并且_yet_暗示他们将来会出现。 –
有趣,所以它看起来像这个功能即将在未来的版本。 –