在UIView
子类中,我覆盖BecomeFirstResponder
(返回Bool
。
class MyViewSubclass:UIView {
...
override func becomeFirstResponder() -> Bool {
// some stuff
return super.becomeFirstResponder()
}
...
}
在子类的对象上调用此方法时,我收到警告Result of call to 'becomeFirstResponder()' is Unused
。
当我不覆盖becomeFirstResponder
时,此消息不会发生。
我知道使用Swift 3时返回结果的方法的行为已经发展(请参阅SE-0047上的@discardableResult
)但我希望覆盖与其超级方法具有相同的行为。
我认为这是错误还是编译错误?
修改:
仅供参考,I filed a bug。
答案 0 :(得分:2)
我不确定它是不是bug。如果你重写了一个函数,那么现在完全有可能不能忽略返回值。如果那是你想要的,我只想添加@discardableResult
:
@discardableResult override open func becomeFirstResponder() -> Bool {
// some stuff
return super.becomeFirstResponder()
}
答案 1 :(得分:1)
这可能是正确的方式,即使我不是swift的专家,但是来自Objective-C
class MyViewSubclass:UIView {
...
override func becomeFirstResponder() -> Bool {
// some stuff
super.becomeFirstResponder()
return true
}
...
}
答案 2 :(得分:1)
最新Swift版本中的错误has been solved。