Looking for objective-c Keywords? Try Ask4Keywords

Objective-C Language IMP (puntero de implementación)


Ejemplo

IMP es un tipo C que se refiere a la implementación de un método, también conocido como puntero de implementación. Es un puntero al inicio de la implementación de un método.

Sintaxis:

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

IMP se define por:

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

Para acceder a este IMP, se puede usar el mensaje "methodForSelector" .

Ejemplo 1:

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

El método dirigido por el IMP se puede llamar mediante la eliminación de la referencia del IMP.

ImpDoSomething(myObject, @selector(doSomething));

Así que estas llamadas son iguales:

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

Ejemplo: 2:

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

IMP methodImplementation  = [self methodForSelector:otherWaySelector];

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

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

Aquí, llamamos a [NSObject methodForSelector, que nos devuelve un puntero a la función C que implementa el método, al que podemos llamar directamente.