この記事http://www.gnustep.org/resources/ObjCFun.htmlは次のように述べています
その時間が重要な場合はいつでも、Objective-C でメッセージをその実装に事前にバインドして、コストのかかるメッセージ ルックアップを回避することができます。
この事前バインディングをどのように行うのですか?これはセレクターに関するものではありませんね。
この記事http://www.gnustep.org/resources/ObjCFun.htmlは次のように述べています
その時間が重要な場合はいつでも、Objective-C でメッセージをその実装に事前にバインドして、コストのかかるメッセージ ルックアップを回避することができます。
この事前バインディングをどのように行うのですか?これはセレクターに関するものではありませんね。
これには実装が含まれます。以下を検討してください(参照があれば+1インターネット):
NSArray *myReallyLongArrayOf1000items;
for (int i = 0; i < 1000; i++)
NSLog(@"%@", [myReallyLongArrayOf1000items objectAtIndex:i]);
obj-c ランタイムが-objectAtIndex:
タスクの実行方法を正確に調べるには時間がかかります。したがって、コードのブロックを次のように変更すると:
NSArray *myReallyLongArrayOf1000items;
id (*objectAtIndex)(NSArray *, SEL, int) = (typeof(objectAtIndex)) [myReallyLongArrayOf1000items methodForSelector:@selector(objectAtIndex:)];
for (int i = 0; i < 1000; i++)
NSLog(@"%@", objectAtIndex(myReallyLongArrayOf1000items, @selector(objectAtIndex:), i);
これは C 関数ポインターを使用します。これは、メソッドを呼び出すだけで追加のランタイム コードを実行しないため、objective-c による動的ルックアップよりもはるかに高速です。
欠点としては、コードがすぐに読みにくくなるため、使用する場合は控えめに使用してください。