Ответ 1
Синтаксис вашей функции несколько неверен.
Как я понимаю, вы должны определить свой блок как тип, который вы можете использовать в качестве возвращаемого типа для своей функции следующим образом:
typedef void(^MyAwesomeBlock)(void);
MyAwesomeBlock blockFunction()
{
MyAwesomeBlock block = ^{
//some code;
};
return block;
}