什么是Blocks
Blocks是C语言的扩充功能。可以概括为:带有自动变量(局部变量)的匿名函数。
所谓的匿名函数,就是没有名字的函数,在C语言中是不允许的。
在计算机科学中,这种概念也称为:“闭包Closure”、“lambda计算”等。
而且一般而言,函数或者方法里是不能又出现一个函数的,但是Blocks作为一种数据类型,是可以的。通常Blocks用于封装代码。因为即便是写在函数体内部,不去调用它,就不会执行。
Blocks的声明
//无参数 无返回值
void (^block1)(void) = ^void(void){
NSLog(@"无参数 无返回值");
};
//无参数 无返回值 可省略表达
void (^block2)(void) = ^{
NSLog(@"无参数 无返回值");
};
//有参数 无返回值
void (^block3)(NSString* name) = ^(NSString* name){
NSLog(@"有参数 无返回值");
};
//有参数 无返回值 前面声明的参数名称可参略
void (^block4)(NSString*) = ^(NSString* name){
NSLog(@"有参数 无返回值");
};
//有参数 有返回值
int (^block5)(NSString* name) = ^ int (NSString* name) {
NSLog(@"有参数 有返回值");
return 1;
};
int number = block5(@"haha");
NSLog(@"howMuch : %d",number);
运行结果: