Looking for objective-c Keywords? Try Ask4Keywords

Objective-C Language IMP (puntatore di implementazione)


Esempio

IMP è un tipo C che si riferisce all'attuazione di un metodo, noto anche come puntatore all'implementazione. È un puntatore all'inizio di un'implementazione del metodo.

Sintassi:

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

IMP è definito da:

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

Per accedere a questo IMP, è possibile utilizzare il messaggio "methodForSelector" .

Esempio 1:

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

Il metodo indicato dall'IMP può essere chiamato dereferenziando l'IMP.

ImpDoSomething(myObject, @selector(doSomething));

Quindi queste chiamate sono uguali:

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

Esempio: 2:

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

IMP methodImplementation  = [self methodForSelector:otherWaySelector];

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

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

Qui, chiamiamo [NSObject methodForSelector che ci restituisce un puntatore alla funzione C che implementa effettivamente il metodo, che possiamo successivamente chiamare direttamente.