文字列を使用してその場でメソッドの名前を作成するメソッドを呼び出す方法があるかどうか疑問に思っています。
例えばloaddataというメソッドがあります
-(void)loadData;
これを呼び出すには、通常、次のように呼び出します
[self loadData];
しかし、私はそれを文字列で動的に呼び出すことができるようにしたい.
NSString *methodName = [[NSString alloc] initWithString:@"loadData"];
[self methodName];
これは馬鹿げた例ですが、あなたが私の論点を得ることを願っています。 IPadアプリケーション用に設定しているデータバインディングクラスに使用しています。説明するのは難しいが、それを起動させるには、文字列でメソッドを呼び出す方法を考え出す必要があります。
何か案は?
ありがとう
あなたは次のようなものを試すことができます
SEL s = NSSelectorFromString(selectorName);
[anObject performSelector:s];
Objc_msgSend関数を使用できます。受信側と送信側のセレクタという2つのパラメータが必要です。
objc_msgSend(self, someSelector);
NSSelectorFromString
を使用して、文字列を適切なセレクターに変換する必要があります。
NSString *message = [self getSomeSelectorName];
objc_msgSend(self, message);
また、このメソッドは可変数の引数を受け取るため、任意の数の引数を持つメッセージを送信できます。
NSString *message = [self getSomeSelectorNameWithManyArguments];
objc_msgSend(self, message, arg1, arg2, arg3, arg4);
NSSelectorFromString
が必要です。