Как вызвать метод класса по его имени (имя метода в виде строки)? - PullRequest
0 голосов
/ 03 марта 2011

В моем приложении я столкнулся с ситуацией, когда мне нужно вызвать конкретный метод класса, используя имя метода (NSString).

Например: - есть класс с именем test1, имеющий метод hello.

<code>
@interface test1 : NSObject{</p>

<p>};
-hello:(id)vals;
@end

Теперь мне нужно вызвать / выполнить метод hello () отсюда.

Предположим, что (id) - это экземпляр класса test1.,

<code>
-(void) RunFunction:(id)instance andFunctionName:(NSString*)fname andParamters:(id)params {</p>

<p>// 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.
}
Может ли кто-нибудь помочь мне в этом.

1 Ответ

4 голосов
/ 03 марта 2011

Вы бы использовали -[NSObject performSelector:withObject:]. В этом случае:

[instance performSelector:NSSelectorFromString(fname) withObject:params]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...