码迷,mamicode.com
首页 > 其他好文 > 详细

Block

时间:2016-04-14 01:15:32      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

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(1020);

 

用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变量 的名称

 

Block

标签:

原文地址:http://www.cnblogs.com/ERICSUN12/p/5389450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!