tipos simple seleccion programacion informatica estructuras estructura ejemplos define control concepto como objective-c

objective-c - programacion - seleccion simple en c++



La definición de un bloque en una sentencia de conmutación produce un error de compilación (1)

La definición de bloque crea un nuevo alcance que parece interferir con la capacidad del compilador para interpretar correctamente la instrucción switch.

La adición de delimitadores de alcance para cada etiqueta de caso resuelve el error. Creo que esto se debe a que el alcance del bloque ahora es inequívocamente un elemento secundario del alcance del caso.

switch (buttonIndex) { case 0: { [self updateUserDataWithCompletion:^{ [weakSelf finishEditing]; }]; break; } case 1: { [self updateOtherDataWithCompletion:^{ [weakSelf finishEditing]; }]; break; } default: break; }

Hay un error abierto con LLVM para un problema similar.

Considere la siguiente instrucción de cambio:

switch (buttonIndex) { case 0: [self fooWithCompletion:^{ [weakSelf finishEditing]; }]; break; case 1: // Error here [self barWithCompletion:^{ [weakSelf finishEditing]; }]; break; default: break; }

Causa el error del compilador.

Cannot jump from switch statement to this case label

en la línea case 1:

¿Por qué sucede esto y cómo lo arreglo?