Looking for objective-c Keywords? Try Ask4Keywords

Objective-C Language IMP (implementatie pointer)


Voorbeeld

IMP is een C-type dat verwijst naar de implementatie van een methode, ook bekend als een implementatie-aanwijzer. Het is een verwijzing naar het begin van de implementatie van een methode.

Syntaxis:

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

IMP wordt gedefinieerd door:

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

Om toegang te krijgen tot deze IMP, kan het bericht "methodForSelector" worden gebruikt.

Voorbeeld 1:

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

De door de IMP geadresseerde methode kan worden opgeroepen door de IMP te verwijderen.

ImpDoSomething(myObject, @selector(doSomething));

Dus deze oproepen zijn gelijk:

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

Voorbeeld: 2:

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

IMP methodImplementation  = [self methodForSelector:otherWaySelector];

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

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

Hier noemen we [NSObject methodForSelector die ons een pointer teruggeeft naar de C-functie die de methode daadwerkelijk implementeert, die we vervolgens direct kunnen aanroepen.