名前(文字列としてのメソッド名)でクラスメソッドを呼び出すにはどうすればよいですか?

objective-c
名前(文字列としてのメソッド名)でクラスメソッドを呼び出すにはどうすればよいですか?

私のアプリケーションでは、状況に遭遇したので、メソッド名(NSString)を使用して特定のクラスメソッドを呼び出す必要があります。

例:-test1というクラスがあり、メソッドhelloがあります。

@interface test1 : NSObject{

};
-hello:(id)vals;
@end

さて、ここからメソッドhello()を起動/実行する必要があります。

(id)instanceがクラスtest1のインスタンスであると仮定します。

-(void) RunFunction:(id)instance andFunctionName:(NSString*)fname andParamters:(id)params {

// need to do something like this - is it possible
// if yes how do i acheive this.
// sample java code starts.
Method m =  instance.getClass().getDeclaredMethod(fname,params);
m.invoke(fname,params);
// sample java code ends.
}

誰もこれで私を助けることができます。

  0  0


ベストアンサー

`-[NSObject performSelector:withObject:]`を使用します。 この場合:

[instance performSelector:NSSelectorFromString(fname) withObject:params]

4


タイトルとURLをコピーしました