block的类型:对象
- 官方文档描述如下 “Blocks are Objective-C objects, which means they can be added to collections like NSArray or NSDictionary”
block的作用:
用来保存某一段代码, 并不是马上执行,需要手动调用
block的定义
返回值类型 (^block变量名)(形参列表) = ^返回值类型(形参列表) {
};
1.不带参数和返回值
void (^block名)() = ^{代码块;}
例如:
void (^myBlock)() = ^{ NSLog(@"YMF"); };
2.带参数和返回值
返回类型 (^block名称)(参数列表)
= ^ (参数列表) { // 代码实现; }
例如:
int (^myBlock)(int, int) = ^(int num1, int num2){ return num1 + num2; };
3.block的其他定义方式
定义一: 等号右边: ^返回值(){};
void(^block1)() = ^void(){
};
定义二: 定义block,不管有没有返回值都可以省略,如果有返回值,在代码块中一定要记得return。
int(^block2)() = ^(){
return 1;
};
非常规定义,声明时不声明参数,定义时传入参数
int (^block)() = ^(int num1, int num2) {
int num = num1 +num2;
NSLog(@"block --%d",num);
return num;
};
4.block的调用
block变量名(实参);