Also, there is some info on: http://fuckingblocksyntax.com
/// returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};
void (^printXAndY)(int) = ^(int y) {
printf("%d %d\n", x, y);
};
printXAndY(4);
void (^blockName)(void) = ^void(void) {
printf("hello world");
};
blockName();
object.property = ^(Foo* foo) {
[foo doSmth];
};