Как сделать большую структуру управления переключателем с переменными значениями проверки? - PullRequest
0 голосов
/ 24 мая 2010

Например, у меня есть огромная структура управления коммутатором с несколькими сотнями проверок. Это последовательность анимации, которая пронумерована от 0 до n.

Кто-то сказал, что я не могу использовать переменные с переключателем. Что мне нужно, это что-то вроде:

NSInteger step = 0;
NSInteger i = 0;
switch (step) {
case i++:
    // do stuff
    break;

case i++:
    // do stuff
    break;

case i++:
    // do stuff
    break;

case i++:
    // do stuff
    break;

}

Суть в том, что система анимации вызывает метод с этой большой структурой переключателя, присваивая ему номер шага. Я хочу иметь возможность просто вырезать-вставить-вставить большие блоки и поместить их в другое положение внутри коммутатора. например, первые 50 блоков до конца.

Я мог бы сделать это легко с огромной структурой if-else, но это выглядело бы некрасиво и что-то подсказывало бы мне, что переключение происходит намного быстрее.

Как?

1 Ответ

1 голос
/ 24 мая 2010

Не делая это таким образом. Метка регистра должна быть постоянной.

Вот один из способов сделать это, возможно, лучше:

Определите селектор для каждой вещи, которую вы хотите сделать, например,

-(void) doOneThing;
-(void) doAnotherThing;
// etc

Поместите их в массив:

SEL anArray[] = { @selector(doOneThing), @selector(doAnotherThing) /* other selectors */, NULL };

И тогда вы можете просто перебирать их.

SEL* selPtr = anArray;
while (selPtr != NULL)
{
    [self performSelector: *selPtr];
    selPtr++;
}
...