Objective c 如何通过名称(方法名称为字符串)调用类方法?
在我的应用程序中,我遇到了一种情况,需要使用方法名(NSString)调用特定的类方法 例如: 有一个名为test1的类,它具有方法helloObjective c 如何通过名称(方法名称为字符串)调用类方法?,objective-c,Objective C,在我的应用程序中,我遇到了一种情况,需要使用方法名(NSString)调用特定的类方法 例如: 有一个名为test1的类,它具有方法hello @接口test1:NSObject{ }); -你好:(id)vals; @结束 现在,我需要从这里调用/执行方法hello() 假设(id)实例是类test1的实例。 -(void) RunFunction:(id)instance andFunctionName:(NSString*)fname andParamters:(id)params
@接口test1:NSObject{
});
-你好:(id)vals;
@结束
现在,我需要从这里调用/执行方法hello()
假设(id)实例是类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.
}
-(void)RunFunction:(id)实例和函数名:(NSString*)fname和parameters:(id)params{
//需要做这样的事情-可能吗
//如果是,我该怎么做。
//示例java代码开始。
方法m=instance.getClass().getDeclaredMethod(fname,params);
m、 调用(fname,params);
//示例java代码结束。
}
有人能帮我吗。您可以使用-[NSObject performSelector:withObject::
。在这种情况下:
[instance performSelector:NSSelectorFromString(fname) withObject:params]
您将使用-[NSObject performSelector:withObject::
。在这种情况下:
[instance performSelector:NSSelectorFromString(fname) withObject:params]
如果方法的参数超过2个,则不能使用此方法。他的预期用例只需要一个对象作为参数。在我看来,这是最合适的解决方案。对于多个参数,您可以使用NSInvocation。看看,如果方法有超过2个参数,你就不能使用它。他预期的用例只需要一个对象作为参数。在我看来,这是最合适的解决方案。对于多个参数,您可以使用NSInvocation。看看你是不是用空格和大写来伤害我们?在正常情况下,我会进去修理,但我太累了。但有一些有用的地方:事实上,您试图调用的不是类方法(它是一个实例方法)。同时,学习许多关于空格和大写的约定中的任何一种(不管是哪一种,但看在上帝的份上,保持一致);如果你在理解类方法和实例方法之间的区别等方面遇到困难,那么阅读苹果的Objective-C指南也可能是一个好主意。@jonathan sterling-我说的是类方法而不是实例方法,这是我的错误。谢谢你指出我的错误并给出宝贵的建议。顺便说一句,@Giridhar,我觉得我之前的评论有点太苛刻了。你是不是用空格和大写来伤害我们?在正常情况下,我会进去修理,但我太累了。但有一些有用的地方:事实上,您试图调用的不是类方法(它是一个实例方法)。同时,学习许多关于空格和大写的约定中的任何一种(不管是哪一种,但看在上帝的份上,保持一致);如果你在理解类方法和实例方法之间的区别等方面遇到困难,那么阅读苹果的Objective-C指南也可能是一个好主意。@jonathan sterling-我说的是类方法而不是实例方法,这是我的错误。谢谢你指出我的错误并给出宝贵的建议。顺便说一句,@Giridhar,我觉得我之前的评论有点太苛刻了。