Looking for objective-c Keywords? Try Ask4Keywords

Objective-C Language IMP(インプリメンテーションポインタ)


IMPは、実装ポインタとも呼ばれるメソッドの実装を参照するC型です。これは、メソッド実装の開始を指すポインタです。

構文:

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

IMPは次のよ​​うに定義されます。

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

このIMPにアクセスするには、メッセージ"methodForSelector"を使用できます。

例1:

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

IMPによってアドレッシングされたメソッドは、IMPの逆参照によって呼び出すことができます。

ImpDoSomething(myObject, @selector(doSomething));

したがって、これらの呼び出しは等しいです。

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

例:2:

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

IMP methodImplementation  = [self methodForSelector:otherWaySelector];

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

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

ここでは、メソッドを実際に実装するC関数へのポインタを返す[NSObject methodForSelector]を呼び出します。これは、後で直接呼び出すことができます。