objective-c xcode exception switch-statement parentheses

objective c - EXC_BAD_ACCESS en bloque de instrucción en Cambiar impacto en imageViewPoistion



objective-c xcode (0)

Tengo una situación extraña. Recibo una excepción en el siguiente código en los corchetes cercanos de la declaración de cambio

imageViewPosition = self.imageView6.center; switch(direction) { case(1): if (starty-imageViewPosition.y>50) { imageViewPosition.y = starty+100; } else { imageViewPosition.y = starty; } break; case(2): ... } <----- Here i get the exception

starty es un miembro de doble clase. Y imageViewPosition es un CGPoint. Cuando lo ejecuto así, recibo una excepción EXC_BAS_ACCESS.

En los siguientes casos no recibo excepción y todo funciona como se esperaba. No entiendo por qué ese es el caso.

a) Cuando agrego paréntesis a la declaración if, todo funciona bien:

if ((starty-imageViewPosition.y)>50) {

b) Cuando coloco el enunciado de caso entre llaves, todo funciona bien.

imageViewPosition = self.imageView6.center; switch(direction) { case(1): { if (starty-imageViewPosition.y>50) { imageViewPosition.y = starty+100; } else { imageViewPosition.y = starty; } } break;

¿Por qué? Espero que las respuestas a las opciones a) yb) sean diferentes. Ya tuve esto antes en otra situación con un interruptor, así que quiero entender lo que estoy haciendo mal. Gracias.