Block

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

 

转载于:https://www.cnblogs.com/ERICSUN12/p/5389450.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值