Coup sur coup, j'ai recréé mon problème car il est assez explicite.
cela est conforme sans erreur:
switch (n) {
case 1:
NSLog(@"");
NSString *aStr;
break;
default:
break;
}
cela compile avec erreur et il ne manque que le NSLog ():
switch (n) {
case 1:
NSString *aStr;
break;
default:
break;
}
il lance une erreur lors de la compilation " Expression attendue avant 'NSString' "
Est-ce que j'ai râté quelque chose?
Dans le C normal, vous devez placer ces informations entre parenthèses dans les deux cas. Je soupçonne que cela peut résoudre votre problème:
case 1:
{
NSLog(@"");
NSString *aStr;
break;
}
Voir cette SO question pour plus d'informations.
Une autre façon de contourner ce problème consiste à mettre une instruction entre l'étiquette de cas et la première déclaration, comme vous l'avez fait dans votre exemple de travail ci-dessus. Voir les commentaires et la réponse de Quinn Taylor pour plus d'informations.
Vous ne pouvez pas déclarer une variable comme ( première instruction dans une case
sans crochets, et dans de nombreux autres contextes dans les langages basés sur C . Voir Déclaration de variables dans une instruction switch pour plus de détails.
case 0: {
Loading my nib file;
break;
}
case 1: {
Loading another nib file;
break;
}
Note that if you don't have an assignment (x = y) right after the case it won't be a problem. For example: