标签:
BOLCK和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样。
/***********定义一个Block***********/ void (^MyBlock)() = ^{ NSLog(@"asdf"); }; // 其中,void是返回值类型,类似于函数的返回值 // (^) 代表是一个block, // MyBlock 是这个block的名字,类似于函数名 // () 是形参,此处没有形参,所以里面是空 // 代码只是保存起来,不会起作用,只有被调用时才执行。 /***********调用这个Block***********/ MyBlcok(); /**********对比 函数定义***********/ void Myfunction() { NSlog(@"asdf"); } /**********对比 函数调用***********/ Myfunction();
有参数的block
/***********定义一个有参数的Block***********/
int (^MyBlock2)(int, int) = ^(int a, int b){
return a + b;
};
// 其中,int 是返回值类型,类似于函数的返回值
// (^) 代表是一个block,
// MyBlock2 是这个block的变量名,类似于函数名
// (int, int) 是形参类型,代表形参是两个int类型的变量,跟函数不用,不用指定形参名,只写类型
// 等号后面^(int a, int b),int a和int b才是形参类型,形参名
/***********调用这个Block***********/
int result = MyBlcok(10,20);
用typedef简化定义block的方式
typedef existing new // typedef语法 typedef int MyInt; // MyInt可以代替int,作为类型名 typedef int (^MyBlock)(int, int);
// MyBlock可以代替int (^MyBlock)(int, int),作为类型名。MyBlock代表一种类型的block,
这种block返回值是int,有两个int类型的形参。 int a = 10; MyInt b = 12; int (^MyBlock)(int, int)= ^(int a, int b){ return a + b; }; MyBlock sumBlock = ^(int a, int b){ return a + b; }; // MyBlock 是前面用typedef定义的类型名,MyBlock代表一种类型的block,这种block返回值是int,
有两个int类型的形参,所以可以用来定义^(int a, int b){ return a + b; }; // sumBlock是 此block变量 的名称
标签:
原文地址:http://www.cnblogs.com/ERICSUN12/p/5389450.html