1

NSInvocation에 싸여있는 메시지의 발신자를 얻으려면 어떻게해야합니까?NSInvocation에 대한 메시지의 발신자를 얻으십시오.

나는 개체에있어 방금 내 forwardInvocation:에 호출을 받았습니다. 메시지를 처음 보낸 사람을 알 수있는 방법이 있습니까?

+1

당신은 객체와 '보낸 사람'을 얻을 수 없을 수도 있지만 그 스택에 어딘가에 있어야한다으로, 호출하는 함수를 얻기 위해 이론적으로는 가능, 또는에서 링크 레지스터. 아마도 응용 프로그램의 95 %에서는 유용하지 않을 수 있습니다. –

+0

흠 ... 그 기능이 어떻게 생겼는지, 뭔가 일반적인 것이거나 보낸 사람에 대한 정보를 추출 할 수 있습니까? – unmircea

+0

NSThread의'callStackSymbols'를 시작점으로 사용할 수 있습니다. –

답변

1

아니요. 명시 적으로 sender:self 인수를 추가하지 않는 한 발신자에 대한 정보를 사용할 수 없습니다.

또한이 스레드 http://www.cocoabuilder.com/archive/cocoa/194746-is-the-sender-of-an-obj-method-implied-in-the-destination-method.html 참조 :

이 명시 적으로 사용할 수 없습니다를 않으며, 당신은 일관되게 파악하기 위해 스택을 휴식을 취하실 수 있습니다. "보낸 사람"이 실제로 Objective-C 개체라는 보장도 없습니다. 다양한 언어 브릿지의 경우 이 함수 또는 FFI 생성 폐쇄가 될 수 있습니다.

b.bum

+0

링크가 매우 유익합니다. 감사합니다! – unmircea