通过在方法名称中使用变量来调用方法?

时间:2013-06-13 04:58:41

标签: ios objective-c methods

我有一个Objective-c的情况,特别是对于iOS应用程序开发,一个特定的方法将执行并返回一个数字,从01 - 20.此外,我有20种不同的方法,名称为m01,m02,m03等。

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

这样的事情:

[self m[NSStringWithFormat=@"%i", myOutputFromMethod1];

有人可以帮我解决这个问题吗?

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

答案 2 :(得分: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;
    }
}

我希望它有所帮助。

答案 3 :(得分:0)

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

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