Block语法,Block类型变量,使用typedef声明Block类型变量

1. Block语法

^ 返回值类型 (参数类型 参数名){

};
举个例子:

^ int (int count) {
            return count;
        };

注意点:

  1. 一定要严格按照^ 返回值类型 (参数类型 参数名)这样的顺序来写Block,否则编译会报错。
  2. 返回值类型不用加括号,参数要加括号。
  3. Block语法要加上 ;
  4. 返回值类型可以省略
^ (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);

注意点:

  1. 声明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类型变量时,记述方式太过复杂的的问题。

你可能感兴趣的:(Block语法,Block类型变量,使用typedef声明Block类型变量)