2016-07-28 2 views
9

をオーバーライドするとき、サブクラスのオブジェクトでこのメソッドを呼び出すときに、私は、Boolを返すオーバーライドBecomeFirstResponderスウィフト3:<code>UIView</code>サブクラスではBecomeFirstResponder

class MyViewSubclass:UIView { 
... 
    override func becomeFirstResponder() -> Bool { 
     // some stuff 
     return super.becomeFirstResponder() 
    } 
... 
} 

よ「コールの未使用の結果を」警告私は警告Result of call to 'becomeFirstResponder()' is Unusedを得る。

私はbecomeFirstResponderをオーバーライドしない場合に、このメッセージは起きていないしません。

は私が知っているスウィフト3返すメソッドの動作と結果は進化しました(@discardableResultSE-0047を参照してください)。ただし、オーバーライドにはスーパーメソッドと同じ動作が必要です。

私はそれを考えて間違っているのでしょうか、それともコンパイラのバグでしょうか?

編集:FYI
、このためI filed a bug

+0

私にはバグのようです。もちろん、あなたの実装が完全に異なっているかもしれないが故意ではないかもしれないので意図的であるかもしれません。 –

+0

私はいくつかの問題があります。はい、私はそれがバグだと思います –

答えて

1

バグかどうかわかりません。関数をオーバーライドすると、戻り値が無視できなくなる可能性があります。私は単にそれが何をしたいかどう@discardableResultを追加します。

@discardableResult override open func becomeFirstResponder() -> Bool { 
    // some stuff 
    return super.becomeFirstResponder() 
} 
0

これは正しい方法であってもよく、迅速にさえイムカントーではない専門家ではなく、からのObjective-C

class MyViewSubclass:UIView { 
... 
    override func becomeFirstResponder() -> Bool { 
     // some stuff 
     super.becomeFirstResponder() 
    return true 
    } 
... 
} 
関連する問題