Looking for objective-c Keywords? Try Ask4Keywords

Objective-C Language IMP (구현 포인터)


IMP는 구현 포인터라고도하는 메소드 구현을 나타내는 C 유형입니다. 메소드 구현의 시작에 대한 포인터입니다.

통사론:

id (*IMP)(id, SEL, …)

IMP는 다음과 같이 정의됩니다.

typedef id (*IMP)(id self,SEL _cmd,…);

이 IMP에 액세스하려면 "methodForSelector" 메시지를 사용할 수 있습니다.

예제 1 :

IMP ImpDoSomething = [myObject methodForSelector:@selector(doSomething)];

IMP에 의해 강조된 메소드는 IMP를 참조 해제함으로써 호출 될 수 있습니다.

ImpDoSomething(myObject, @selector(doSomething));

따라서 이러한 호출은 동일합니다.

 myImpDoSomething(myObject, @selector(doSomething));
[myObject doSomething]
[myObject performSelector:mySelector]
[myObject performSelector:@selector(doSomething)]
[myObject performSelector:NSSelectorFromString(@"doSomething")];

예 : 2 :

SEL otherWaySelector = NSSelectorFromString(@“methodWithFirst:andSecond:andThird:");

IMP methodImplementation  = [self methodForSelector:otherWaySelector];

result = methodImplementation( self,
                          betterWaySelector,
                          first,
                          second,
                          third );

NSLog(@"methodForSelector : %@", result);

여기서 우리는 [NSObject methodForSelector]를 호출하여 메소드를 실제로 구현하는 C 함수에 대한 포인터를 반환합니다.이 함수는 이후에 직접 호출 할 수 있습니다.