Block语法从记述方式上,除了没有名称以及带有“ ^ ”以外,其他都于C语言函数定义相同。 在定义C语言函数时,可以将所定义的函数的地址赋值给函数指针类型变量中。
int func (int count)
{
return count + 1;
}
int (*funcptr) (int) = &func;
同样地,在Block语法下,可将Block语法赋值给声明为Block类型的变量中。
代码中使用Block语法就相当于生成了可赋值给Block类型变量的值。
有关Blocks的文档中,“Block”既指代码中的Block语法,也指由Block语法所生成的值。
// 声明Block类型变量 示例:
int (^blk) (int);
Block类型变量与一般C语言变量完全相同,用途:
自动变量
函数参数
静态变量
静态全局变量
全局变量
// Block语法生成的值赋值给Block类型变量
int (^blk) (int) = ^int (int count) {
return count + 1;
};
Block类型变量可以给Block类型变量赋值,可以作为函数参数,也可以作为函数返回值。
// 通过typedef 声明Block类型变量
typedef int (^blk) (int);
调用Block类型变量与调用函数指针类型变量一样
// 调用函数指针类型变量
int ruesult = (*funcptr)(10);
// 调用Block类型变量
int ruesult = blk(10);
网友评论