0

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

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

像这样的东西:

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

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

4

4 回答 4

5

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

于 2013-06-13T05:00:33.023 回答
2
SEL s = NSSelectorFromString([NSString NSStringWithFormat:@"m%i", myOutputFromMethod1]);
[anObject performSelector:s];
于 2013-06-13T05:01:41.310 回答
2

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

-(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;
    }
}

我希望它有所帮助。

于 2013-06-13T05:39:09.607 回答
0
SEL s = NSSelectorFromString([NSString NSStringWithFormat: @"m%i", myOutputFromMethod1]);

if ([anObject respondsToSelector: s])
{
    [anObject performSelector: s];
}
于 2013-06-13T05:21:30.770 回答