OC中的Block简单介绍

来源:互联网 发布:埃迪·琼斯数据 编辑:程序博客网 时间:2024/06/06 00:54

Block的意思就是 块,跟java中的匿名内部类的实现有点相似,例如:

 //定义了一个block,这个block返回值是int类型,接收两个int类型的参数

    int (^Sum)(int,int)=^(int a,int b){

        return a+b;

    };

    

    int a=Sum(10,5);

    

    NSLog(@"%i",a);


上述代码中,定义一个Block用 ^符号, Block有返回值类型,也可以有参数。

我们可以先定义一个Block类型,然后再去实现,例如:

    //定义了MySum这种Block类型

    typedef int (^MySum)(int,int);

    

   //定义了一个block变量

    MySum sum1=^(int a,int b){

        return a+b;

    };

    

    int c=sum1(1,2);

    NSLog(@"%i",c);

例如上边的代码中,先用typedef定义了一个叫MySum的Block类型,然后再定义一个block变量,最后在调用。


Block在使用的时候,跟指针函数有点类似,例如:

int sum(int a,int b){

    return a+b;

}


void test(){

    //block

    int (^Sum)(int,int)=^(int a,int b){

        return a+b;

    };

    int c=Sum(10,10);

    NSLog(@"%i",c);


    //指针函数

    int (*sump)(int ,int)=sum;

    

    c=(*sump)(10,7);

    NSLog(@"%i",c);

}
0 0