在一个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 ),但我希望覆盖与超级方法具有相同的行为。
我错在想这或者它可能是一个编译器错误?
编辑 : 仅供参考, 我为此提出了一个错误 。
In a UIView subclass, I'm override BecomeFirstResponder (which returns a Bool.
class MyViewSubclass:UIView { ... override func becomeFirstResponder() -> Bool { // some stuff return super.becomeFirstResponder() } ... }When calling this method on a object of the subclass, I get a warning Result of call to 'becomeFirstResponder()' is Unused.
This message doesn't not happened when I don't override becomeFirstResponder.
I know that with Swift 3 the behaviour of methods returning results has evolved (see @discardableResult on SE-0047) but I would expect an override to have the same behaviour as its super method.
Am I wrong for thinking that or is it maybe a compiler bug ?
Edit: FYI, I filed a bug for this.
最满意答案
我不确定这是否是错误。 如果你已经覆盖了一个函数,那么现在完全有可能返回值不能被忽略。 如果这是你想要的,我会简单地添加@discardableResult :
@discardableResult override open func becomeFirstResponder() -> Bool { // some stuff return super.becomeFirstResponder() }The bug has been solved in the lastest Swift version.
Swift 3:覆盖BecomeFirstResponder时警告“未使用结果”(Swift 3 : Warning “Unused result of call” when overriding BecomeFirstResponder)在一个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 ),但我希望覆盖与超级方法具有相同的行为。
我错在想这或者它可能是一个编译器错误?
编辑 : 仅供参考, 我为此提出了一个错误 。
In a UIView subclass, I'm override BecomeFirstResponder (which returns a Bool.
class MyViewSubclass:UIView { ... override func becomeFirstResponder() -> Bool { // some stuff return super.becomeFirstResponder() } ... }When calling this method on a object of the subclass, I get a warning Result of call to 'becomeFirstResponder()' is Unused.
This message doesn't not happened when I don't override becomeFirstResponder.
I know that with Swift 3 the behaviour of methods returning results has evolved (see @discardableResult on SE-0047) but I would expect an override to have the same behaviour as its super method.
Am I wrong for thinking that or is it maybe a compiler bug ?
Edit: FYI, I filed a bug for this.
最满意答案
我不确定这是否是错误。 如果你已经覆盖了一个函数,那么现在完全有可能返回值不能被忽略。 如果这是你想要的,我会简单地添加@discardableResult :
@discardableResult override open func becomeFirstResponder() -> Bool { // some stuff return super.becomeFirstResponder() }The bug has been solved in the lastest Swift version.
发布评论