私はIOSのライブラリを開発しています。このライブラリは、ある時点でNSArray
、さまざまなクラスからのメソッド参照を作成する必要があります。ある時点でそれらを呼び出す単一のクラスに。
それを行う方法はありますか?
ありがとう
いくつかのオプションがあります。NSStrings
メソッドの名前を実際に取得してから、次のようにすることができます。
NSString *myMethodName = @"hellWorld";
SEL selector = selectorFromString(myMethodName);
次に、セレクターをに追加できますNSArray
。
NSInvocations
メソッドを使用して保存し、後でターゲットを定義することもできます。
NSInvocationオブジェクトには、Objective-Cメッセージのすべての要素(ターゲット、セレクター、引数、および戻り値)が含まれています。これらの各要素は直接設定でき、NSInvocationオブジェクトがディスパッチされると戻り値が自動的に設定されます。
Appleドキュメントから。
編集1(それを楽しむために):
- (Method *)getMethodsPointer{
unsigned int number = 0;
Method *myMethods = class_copyMethodList([self class], &number);
//for(int i=0;i<number;i++)
// {
// printf("%s",sel_getName(method_getName(myMethods[i])));
//}
return myMethods;
}
にセレクターを追加できますarray
。次のようなセレクターを作成します。
-(void)myMethod:(int)something
SEL selectorToMyMethod = @selector(myMethod:);
お役に立てば幸いです、乾杯!
いくつかのNSInvocationを作成し、セレクターとターゲットクラスをその中に格納して、NSInvocationを配列に追加することができます。
セレクターの保存は可能ですが、メソッドが1つのクラスにのみ存在する場合に限ります。これは、セレクターがクラスから独立しているためです。