使用NSString变量调用一个函数

24 浏览
0 Comments

使用NSString变量调用一个函数

在XCode中,是否有可能使用NSString变量作为调用函数的方式?\n这只是一个例子。我有一个名为[Settings getBest1]的函数,用于获取第一关的最高分,[Settings getBest2]用于获取第二关的最高分,以此类推,适用于多个关卡。\n我有一个整数值,表示我想查看其最高分的关卡。\n在编码应用程序时,最好的方式是如何使用这个整数来调用正确的函数?除了下面这种方式外,是否还有更好的方式:\n

switch(levelInt) {
   case 1: [Settings getBest1]; break;
   case 2: [Settings getBest2]; break;
   case 3: [Settings getBest3]; break;
   case 4: [Settings getBest4]; break;
...
}

\n我希望能够做到不可能的事情:\n

NSString *getBestString = [NSString stringWithFormat:@"getBest%i", levelInt];
[Settings getBestString];

\n但由于这是不可能的,是否有其他实现这个想法的方式?

0
0 Comments

使用NSString变量来调用函数是可能的,但应该尽量避免。在stackoverflow网站上有一个类似的问题。编译器会报错并且使用这种方法可能会引起问题。例如,如果用户输入了一个无效的方法名,应用程序就会崩溃(当然,这也可能是因为应用程序设计不良)。你之前使用的switch方法是更好的做法。谢谢-我猜我刚才做梦了。链接的问题中的NSSelectorFromString代码似乎只对变量起作用,不确定它是否会调用另一个类中的函数并返回一个值。字符串由输入创建(根据您的代码)。然后,将字符串转换为选择器。选择器传递给performSelector,它调用与选择器值匹配的方法。

0