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