2016-07-28 1 views
9

를 오버라이드 (override) 할 때, 나는 반환 (재정 BecomeFirstResponder 해요 Bool스위프트 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를 오버라이드 (override)하지 않는 경우이 메시지는 발생하지 않습니다.

내가 알고 스위프트 3 반환 방법의 행동 결과가 진화했다 (@discardableResultSE-0047에 있음).하지만 오버 라이드가 슈퍼 메서드와 동일한 동작을 할 것으로 기대합니다.

제가 생각하기에 잘못 되었나요? 아니면 아마도 컴파일러 버그입니까?

편집 : 이것에 대한
참고 , I filed a bug.

+0

나에게 버그처럼 보입니다. 물론 구현이 완전히 다를 수 있기 때문에 의도적 일 수 있지만 이상하게 보입니다. –

+0

나는 약간 문제가있다. 예, 버그라고 생각합니다. –

답변

1

버그인지 확실하지 않습니다. 함수를 오버라이드 (override)하면 반환 값을 이제 무시할 수 없다는 가능성이 있습니다. 나는 단순히 만약 당신이 원하는 @discardableResult를 추가 :

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

이것은 올바른 방법이 될 수있다, 신속한 심지어 메신저 상점하지 전문가 만에서 오브젝티브 C

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