1. Block语法
^ 返回值类型 (参数类型 参数名){
};
举个例子:
^ int (int count) {
return count;
};
注意点:
- 一定要严格按照^ 返回值类型 (参数类型 参数名)这样的顺序来写Block,否则编译会报错。
- 返回值类型不用加括号,参数要加括号。
- Block语法要加上 ;。
- 返回值类型可以省略
^ (int count) {
return count;
};
这时候返回值类型由 return的类型决定。
2. Block类型变量
返回值 (^变量名)(参数类型 参数名)
举了例子:
int (^blk1) (int)
使用Block语法创建的Block给Block类型的变量赋值,举例如下:
int (^blk1) (int) = ^ int (int count) {
return count;
};
获取了Block类型的变量后的使用:
// 像函数一样直接传入参数,同时也可以声明一个和返回值类型相同的变量来接收Block执行后的返回值。
int a = blk1(2);
注意点:
- 声明Block类型的变量时,返回值不需要加括号,变量名,参数都需要加括号,否则会编译报错。
3. typedef声明Block类型变量
// 使用typedef声明一个Block类型变量
typedef int (^blk_hjf) (int);
blk_hjf blk = ^ int (int count) {
return count;
};
int a = blk(2);
NSLog(@"a = %d", a);
这样就可以解决在函数参数和返回值中使用Block类型变量时,记述方式太过复杂的的问题。