Swift 3:警告"未使用的呼叫结果"当覆盖BecomeFirstResponder时

时间:2016-07-28 13:50:26

标签: ios swift3

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

3 个答案:

答案 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