Looking for objective-c Keywords? Try Ask4Keywords

Objective-C Language IMP (wskaźnik realizacji)


Przykład

IMP jest typem C odnoszącym się do implementacji metody, znanej również jako wskaźnik implementacji. Jest wskaźnikiem do początku implementacji metody.

Składnia:

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

IMP jest zdefiniowany przez:

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

Aby uzyskać dostęp do tej IMP, można użyć komunikatu „methodForSelector” .

Przykład 1:

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

Metodę adresowaną przez IMP można wywołać, usuwając odwołanie z IMP.

ImpDoSomething(myObject, @selector(doSomething));

Te połączenia są równe:

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

Przykład: 2:

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

IMP methodImplementation  = [self methodForSelector:otherWaySelector];

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

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

Wywołujemy tutaj [NSObject methodForSelector, który zwraca nam wskaźnik do funkcji C, która faktycznie implementuje metodę, którą możemy następnie wywołać bezpośrednio.