Все, что вы делаете там, это создание отдельных областей. Все, что объявлено внутри первой области, не будет доступно для второй области.
Это вполне допустимый C (а поскольку Objective-C - это просто строгий надмножество C, его тоже хорошо).
Я видел, как это было сделано во многих проектах, над которыми я работал. Тем не менее, я никогда не использовал его сам, так как это можно рассматривать как способ разделения частей метода, которые не имеют особого отношения и могут указывать на плохое качество кода - не то чтобы я говорил, что ваш код плохой !
Также это не блоки C, как в «замыканиях», блок C выглядит как
^{
//code
}
в его основной форме.