In C/Obj-C, we do a typedef like this typedef int MYINT;
which is clear.
Doing typedef for a block -typedef void (^MyBlock) (int a);
No
Also from "Blocks Programming Topics", creating a type for blocks should be like this:
typedef returnType (^blockName)(argument1, argument2, ...)
Below is a very simple practical example:
typedef float (^MyBlockType)(float, float);
MyBlockType AddTwoFloat = ^(float a, float b) {return a + b;};
MyBlockType MultiplyTwoFloat = ^(float a, float b) {return a * b;};
float c = AddTwoFloat(1, 2); //c = 3
float d = MultiplyTwoFloat(1, 2); //d = 2
See Declaring a Block Reference in "Blocks Programming Topics":
Block variables hold references to blocks. You declare them using syntax similar to that you use to declare a pointer to a function, except that you use ^ instead of *.
So
typedef void (^myBlock) (int a);
defines a the type of a block using the same syntax as
typedef void (*myFunc) (int a);
declares a function pointer.
See e.g. Understanding typedefs for function pointers in C for more information about function pointers.