2012-07-25 2 views
0

개발을 위해 cocos2d를 사용하고 있습니다. 맞춤형 버튼 클래스를 래핑하려고했습니다. 단추가 할당 된 선택기에 응답하려고 할 때 NSInvocation을 사용했습니다. MyButton은 이와 같이 작동합니다.NSInvocation이 2 차원 인디스 인수로 자체를 전달해야합니까?

if(target && sel) { 
      sig = [target methodSignatureForSelector:sel]; 
      invocation_ = nil; 
      invocation_ = [NSInvocation invocationWithMethodSignature:sig]; 
      [invocation_ setTarget:target]; 
      [invocation_ setSelector:sel]; 
      [invocation_ setArgument:&self atIndex:2]; 
      [invocation_ retain]; 
     } 

나는 SEL이 같은 함수를 통과했다 :

- (void)onButtonClicked:(id)sender; 

내 질문은 : MyButton에의 구현이 줄 [invocation_ setArgument:&self atIndex:2];을 추가하는 것이 필요합니까? NSInvocation Class Reference

하면 해당 주소 : 여기에 IOS 문서에 따라 때문에 나는이 질문이

이다

지수를 0과 1 숨겨진 인수 자체 각각 _cmd, 를 나타냅니다; setTarget : 및 setSelector : 메소드를 사용하여이 값을 직접 설정해야합니다. 일반적으로 메시지에 전달 된 인수 에 인덱스 2 이상을 사용합니다.

setTarget을 호출 할 때 자체가 전달 된 것처럼 보입니다. 즉, & 자체 인수는 setArgument 메서드에서 전달 될 필요가 없습니다.

감사

+0

이 컨텍스트에서 '자체'란 무엇입니까? 호출은 어디에서 생성됩니까? –

+0

@JoshCaswell 자신이 구현 한 CCNode의 하위 클래스 인 MyButton입니다. 문맥에서, self는 버튼을 "자기 자신"을 "발신자"로 간주하는 것을 의미합니다. – analysiser

답변

0

문서는 첫 번째 인수 (와는 indice 0) 대상 객체 (그래서 "자기")를 대표하는 것을 말한다. 설명서에 설명되어 있듯이 첫 번째 인수는 setTarget: 메서드를 사용하여 설정됩니다.

이 코드 줄을 [invocation_ setArgument:&self atIndex:2];으로 유지하여 단추의 참조를 대상 - 작업 쌍에 보내야합니다.

+0

감사합니다. 나중에 몇 가지 테스트를 통해 발견했습니다. 도와 줘서 고맙다. – analysiser