在 C/Obj-C 中,我们执行这样的 typedef,typedef int MYINT;
这很清楚。
为一个块做 typedef -typedef void (^MyBlock) (int a);
现在,我们可以使用MyBlock
.
它不应该像 -typedef void (^MyBlock) (int a) MyBlock;
类似于#define
吗?
语法如何工作?
在 C/Obj-C 中,我们执行这样的 typedef,typedef int MYINT;
这很清楚。
为一个块做 typedef -typedef void (^MyBlock) (int a);
现在,我们可以使用MyBlock
.
它不应该像 -typedef void (^MyBlock) (int a) MyBlock;
类似于#define
吗?
语法如何工作?
请参阅“块编程主题”中的声明块引用:
块变量保存对块的引用。您可以使用类似于声明指向函数的指针的语法来声明它们,不同之处在于您使用 ^ 而不是 *。
所以
typedef void (^myBlock) (int a);
使用与以下相同的语法定义块的类型
typedef void (*myFunc) (int a);
声明一个函数指针。
有关函数指针的更多信息,请参见了解 C 中函数指针的 typedef 。
同样来自“块编程主题”,为块创建类型应该是这样的:
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