2013-06-13 127 views
0

我有一个objective-c特别是iOS应用程序开发中的情况,一个特定的方法将执行并返回一个从01到20的数字。另外,我有20种不同的方法,名称为m01,m02,m03等。通过使用方法名称中的变量调用方法?

我该如何编程我的代码,以便我的第一个方法调用与第一个方法返回的数字相对应的另一个方法?

事情是这样的:

[self m[[email protected]"%i", myOutputFromMethod1]; 

是否有人可以帮助我得到这个工作?

回答

5

您可以使用NSSelectorFromString([NSString stringWithFormat:@"m%i", myOutputFromMethod1])获取选择器的名称,然后使用[self performSelector:]执行。

+0

太好了,我来试一试。谢谢! – jake9115

+0

尽管如此,请注意,方法*必须*返回一个Objective-c对象(即'NSNumber'而不是'int') – borrrden

+0

哦谢谢指出! – jake9115

2
SEL s = NSSelectorFromString([NSString NSStringWithFormat:@"m%i", myOutputFromMethod1]); 
[anObject performSelector:s]; 
0
SEL s = NSSelectorFromString([NSString NSStringWithFormat: @"m%i", myOutputFromMethod1]); 

if ([anObject respondsToSelector: s]) 
{ 
    [anObject performSelector: s]; 
} 
2

使用几十取决于一个返回值的方法绝对不是良好的编程习惯,(除非你有其中一些我不知道的非常特殊的要求)。 你可以调用相同的方法,但传递一个参数给它。该参数可以放入switch语句中,然后可以为每个参数值编写一个“case”。例如

-(void) method_m :(int)mNum 
{ 
    switch(mNum) 
    { 
     case 0: 
      //your code for method 00 
      break; 
     case 1: 
      //your code for method 01 
      break; 
     default: 
      break; 
    } 
} 

我希望它有帮助。

相关问题