Objective-C는 한 개체가 다른 개체의 메서드를 호출 할 때 정교한 메시지 전달 시스템을 사용합니다. 호출 된 메서드 내에서 호출하는 개체가 무엇인지 판단 할 수 있는지 알고 싶습니다. 예를 들어Objective-C 런타임 기능을 사용하여 메소드가 호출 된 위치를 확인할 수 있습니까?
:
내가performTest
을 실행할 때 주장 패스를 만들기 위해 주석 줄을 쓸 수 무엇
@implementation callingClass
- (void)performTest
{
calledObject = [[[calledClass alloc] init] autorelease];
id result = [calledObject calledMethod];
assert(result == this);
}
@end
@implementation calledClass
- (id)calledMethod
{
id objectThatCalledThisMethod = ... // <-- what goes here?
return objectThatCalledThisMethod;
}
@end
?
있는 NSInvocation 또한 발신자에 대한 아무것도하지 않습니다 - 단지 목표, 선택, 및 인수를. –
그 이유는 새 클래스를 파생 시키거나 주위에 배치하는 것이 좋습니다. 이는 발신자를 호출 함수에 전달하거나 수신자 측에서 정보를 가져올 수있는 데이터 구조를 만들 수있는 일관된 방법을 제공 할 수 있습니다. 그가 성취하려고하는 것에 달려있다. –