0

XCodeで関数を呼び出す方法としてNSString変数を使用することは可能ですか?

これはほんの一例です。レベル 1 のハイスコアを取得する [Settings getBest1] と、レベル 2 のハイスコアを取得する [Settings getBest2] など、いくつかのレベルの関数があります。

私は見たいハイスコアのレベルである整数値を持っています。この整数を使用して適切な関数を呼び出すことができるように、アプリをコーディングする最良の方法は何ですか? 次の方法よりも良い方法はありませんか?

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

不可能を可能にしたい:

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

しかし、それは不可能なので、このアイデアを実現する他の方法はありますか?

4

1 に答える 1

1

これは不可能ではありませんが、避けるべきです。文字列を使用してメソッドを動的に呼び出す目的の Cに、同様の質問があります。

コンパイラは文句を言い、このメソッドを使用すると問題が発生する可能性があります。たとえば、ユーザーが無効なメソッド名を入力すると、アプリケーションがクラッシュします (これはもちろん、アプリケーションの設計が不十分な場合にも発生する可能性があります)。

これまで使用してきた switch メソッドは、これを行うためのはるかに優れた方法です。

于 2013-06-09T00:59:42.697 に答える