2016-07-28 36 views
9

當在子類UIView,我倍率BecomeFirstResponder(它返回Bool夫特3:警告「呼叫的未使用的結果」重寫BecomeFirstResponder

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

當調用子類的一個對象在該方法中,我得到一個警告Result of call to 'becomeFirstResponder()' is Unused

這個消息時,我不會覆蓋becomeFirstResponder不沒有發生。

我知道,與斯威夫特3的方法返回行爲結果已經演變(請參見SE-0047上的@discardableResult),但我希望覆蓋與其超級方法具有相同的行爲。

我錯在想這或者它可能是一個編譯器錯誤?

編輯
僅供參考,I filed a bug這一點。

+0

看起來像一個bug給我。這當然可能是故意的,因爲你的實現可能完全不同,但似乎很奇怪。 –

+0

我有一些問題。是的,我認爲這是一個錯誤 –

回答

1

我不確定它是否是bug。如果你已經覆蓋了一個函數,那麼現在完全有可能返回值不能被忽略。我只想補充@discardableResult如果這就是你想要的東西:

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

這可能是正確的方式,甚至壽IM上的快捷不是專家,但是從Objective-C的

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