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, которая фактически реализует метод, который мы можем впоследствии вызвать напрямую.