¿Por qué los bloques en iOS se comportan como no deberían?

No sé qué problema ha enfrentado con los Bloques en el Objetivo C, pero según su comentario, espero que esto ayude.

Los bloques en el objetivo C se utilizan para pasar segmentos distintos de código a los métodos como parámetros. Se usan comúnmente para operaciones asincrónicas y enumeración.

También hay un riesgo involucrado. Existe una clara posibilidad de que los objetos a los que se hace referencia en el bloque no estén en la memoria en el momento en que se ejecuta el bloque.

Una de las características del Objetivo C es que enviar mensajes (métodos de llamada) a referencias nulas no causa un bloqueo. Consulte Enviar mensajes a referencias nulas en el objetivo C para obtener más información.

Por lo tanto, verifique si los objetos a los que se hace referencia en el bloque realmente existen en el momento en que se ejecuta el bloque utilizando una instrucción if. Puede depurar problemas en XCode colocando puntos de interrupción y utilizando NSLog.

Si su problema es diferente, actualice los detalles de la pregunta.