1

私はIOSのライブラリを開発しています。このライブラリは、ある時点でNSArray、さまざまなクラスからのメソッド参照を作成する必要があります。ある時点でそれらを呼び出す単一のクラスに。

それを行う方法はありますか?

ありがとう

4

3 に答える 3

4

いくつかのオプションがあります。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;
}
于 2012-07-05T11:39:44.843 に答える
1

にセレクターを追加できますarray。次のようなセレクターを作成します。

-(void)myMethod:(int)something

SEL selectorToMyMethod = @selector(myMethod:);

お役に立てば幸いです、乾杯!

于 2012-07-05T11:35:33.303 に答える
-1

いくつかのNSInvocationを作成し、セレクターとターゲットクラスをその中に格納して、NSInvocationを配列に追加することができます。

セレクターの保存は可能ですが、メソッドが1つのクラスにのみ存在する場合に限ります。これは、セレクターがクラスから独立しているためです。

于 2012-07-05T11:40:50.757 に答える