2013-07-23 1 views
2

웹 (https://github.com/Musixmatchdev/ObjectiveHeaders/blob/master/Headers/iPhoneOS6.0.sdk/UIKit/UIBarButtonItem.h)을 보면 UIBarButtonItem이 구현되었음을 알게되었습니다. nextResponder selector.UIBarButtonItem nextResponder 호출

그러나 이것은 UIBarButtonItem의 공용 API가 아니지만 UIResponder 클래스에 있습니다 (슬프게도 UIBarButtonItem이 상속하지 않습니다).

사용 권한이 있습니까? 아니면 Apple에서 거부 할 수 있습니까? (

잭 Pardshe

슬프게도

답변

0

내가 내 특정 문제에 대한 해결책을 찾을 확인 : 내가 앞으로 호출

를 [[UIApplication sharedApplication]는 액션 (SendAction) :에 :에서 : forEvent :]] (로부터 매개 변수) 차례로 UIBarButtonItem nextResponder을 선택기를 사용하는 . 따라서 이것은 공용 API를 사용하는 간접 참조입니다.

그러나 Apple은이 메소드의 id 매개 변수에 respondsToSelector : @selector (nextResponder)를 사용하고 있다고 생각합니다. 따라서 id 매개 변수를 사용하고 nextResponder를 호출하는 메서드를 작성하는 사용자 지정 코드 내에서 동일한 작업을 수행하는 것은 private API를 사용하는 것으로 보이지 않는 nextResponder 선택기를 사용하는 솔루션 일 수도 있습니다. 그러나 이것은 단지 가설입니다.

0

을 나는 애플 포럼에 질문을 것이다하지만 거 아래로 내가 :)

덕분에 많은 생각 잠시 동안 할 수있어, UIBarButtonItem는 불구가 UIBarItem에 따라, 그리고도있다 그들은 nextResponder 메쏘드를 구현한다. 따라서 비공개 API로 간주되며 Apple App Store review guideline pt.2.5에 따르면 "비공개 API를 사용하는 앱은 거부됩니다".

참고 : 애플 개발자 포털은 이제 다운, 그러나 사람은 쉽게 그물

P.S.의 가이드를 찾을 수 있습니다 UIBarButtonItem의 nextResponder를 사용하는 이유를 설명하십시오. - 달성 할 수있는 방법은 여러 가지가있을 것입니다.

+0

사용자가 설정 한 실제 작업/대상을 트리거하기 전에 (또는 트리거하지 않고) UIBarButtonItem에 대한 조치/대상을 프록시로 지정하여 일부 점검 조건을 수행하려고했습니다. 그러나이 경우 응답자 체인에서 nil 대상을 처리하지 않습니다. –

+0

UINavigationBar를 가리키는 UIBarButtonItem의 private nextResponder입니다. UINavigationBar는 UIResponder를 기반으로하므로 nextResponder는 public이며, 거기에서 수표를 절대적으로 합법적으로 처리 할 수 ​​있습니다. –

+0

참고 : 작성한 모든 UIBarButtonItem의 nextResponder가 항상 UINavigationBar를 가리킬 것이라는 것을 100 % 보장 할 수있는 사람은 아무도 없습니다. 그러나 그 사실은 애플의 응답자 체인 디자인 패턴에 완벽하게 부합하기 때문에 프로덕션 환경에서 사용하는 것이 안전하다고 생각합니다. –