Block经常用作函数块,与函数类似,但是本质上是一种数据类型,需要定义然后调用,所以要用看常量的角度看待block。
Block可以使用并改变全局变量,这个性质很好用,可以在类里定义一些成员然后经过Block记录上下文。但不能使用局部变量,至于为什么不能,我想是因为block的内存分配和函数类似,都有各自的栈,跨栈访问时不可行的,当然声明为__block 类型的变量应该都明白---专门给block使用处理的。
Block 可以递归,这又是和函数类似的性质。
对了Block的声明方法举例:
void (^ myblock)(int) = ^(int){ .... };
一般用typedef 提高可读性: typedef void(^myblock)(int) blockDemo;
这样blockDemo 就是一种数据类型了, 随便怎么用吧。