Видя ту же (похожую) проблему. iOS5 доволен, iOS4.3.5, не доволен. Заинтересованы в том, чтобы узнать, что вы в конечном итоге найдете.
Обошли его, явно сохранив запись, запись, чтение, чтение перед блоком requestMedatWhenReadyOnQueue и явно освободив все четыре в самом конце предложения else.
Док говорит, что после завершения маркировки "Блок должен выйти". Может быть, они не шутят. Если вы делаете что-то кроме выхода, это ошибка. Похоже, что вышеуказанный обходной путь работает.
ОБНОВЛЕНИЕ: Я все же обнаружил, что он иногда зависал даже после сохранения и освобождения всех объектов актива. Как видно из вашего вопроса, он вылетает вскоре после того, как вы помечаете ввод средства записи как завершенный, как если бы сам блок был освобожден. Вместо того, чтобы просто передать блок как часть функции. Я создаю скопированное свойство блока, которое является частью долгоживущего объекта. Я инициализирую его с помощью Block_copy и освобождаю его только в деструкторе долгоживущего объекта. Это, кажется, делает трюк. С тех пор я не видел сбоев 4.3.5.