typedef-ing块如何工作
在C / Obj-C中,我们做这样的typedef int MYINT;
这很清楚。
为block执行typedef – typedef void (^MyBlock) (int a);
现在,我们可以使用MyBlock
。
不应该像 – typedef void (^MyBlock) (int a) MyBlock;
类似于#define
?
语法是如何工作的?
请参阅“块编程主题”中的声明块参考 :
块variables保持对块的引用。 您使用与用于声明指向函数的指针相似的语法来声明它们,除了使用^而不是*。
所以
typedef void (^myBlock) (int a);
定义一个使用相同语法的块的types
typedef void (*myFunc) (int a);
声明一个函数指针。
有关函数指针的更多信息,请参阅C中的函数指针的了解types定义 。
另外从“块编程主题”中,创build块的types应该是这样的:
typedef returnType (^blockName)(argument1, argument2, ...)
下面是一个非常简单的实例:
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