Looking for objective-c Keywords? Try Ask4Keywords

Objective-C Language IMP (Implementierungszeiger)


Beispiel

IMP ist ein C-Typ, der sich auf die Implementierung einer Methode bezieht, die auch als Implementierungszeiger bezeichnet wird. Es ist ein Zeiger auf den Beginn einer Methodenimplementierung.

Syntax:

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

IMP wird definiert durch:

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

Für den Zugriff auf diesen IMP kann die Nachricht "methodForSelector" verwendet werden.

Beispiel 1:

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

Die vom IMP adressierte Methode kann durch Dereferenzierung des IMP aufgerufen werden.

ImpDoSomething(myObject, @selector(doSomething));

Also sind diese Aufrufe gleich:

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

Beispiel: 2:

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

IMP methodImplementation  = [self methodForSelector:otherWaySelector];

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

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

Hier rufen wir [NSObject methodForSelector auf, der einen Zeiger auf die C-Funktion zurückgibt, die die Methode tatsächlich implementiert, die wir anschließend direkt aufrufen können.