2010-05-24 4 views
0

Par exemple, j'ai une énorme structure de contrôle de commutateur avec quelques centaines de contrôles. Ils sont une séquence d'animation numérotée de 0 à n.Comment faire une grosse structure de contrôle de commutation avec des valeurs de contrôle variables?

Quelqu'un a dit que je ne peux pas utiliser de variables avec le commutateur. Ce que je besoin est quelque chose comme:

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; 

} 

Le point de ceci est que le système d'animation appelle une méthode avec cette grande structure de commutateur, ce qui lui donne un numéro d'étape. Je veux pouvoir simplement couper-copier-coller de gros blocs et les placer dans une position différente à l'intérieur de l'interrupteur. par exemple, les 50 premiers blocs à la fin.

Je pourrais le faire facilement avec une énorme structure if-else, mais ça aurait l'air moche et quelque chose me dit que le switch est beaucoup plus rapide.

Comment?

Répondre

1

En ne le faisant pas de cette façon. Une étiquette de cas doit être une constante.

est ici une façon de faire qui pourrait être mieux:

Définir un sélecteur pour chaque chose que vous voulez faire par exemple

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

les placer dans un tableau:

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

Et vous pouvez simplement itérer à travers eux.

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