Block定义与使用

本文介绍了Block的基本概念,它是Objective-C中的匿名函数。详细讲解了Block的定义方式,包括不同类型的参数和返回值,并给出了调用示例。同时,还对比了Block与函数指针的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Block是块语法,本质上是匿名函数(也就是没有函数名的方法)。它和函数指针类似。

2.Block定义

int (^myBlock)(int) = ^int(int num1){

return num1 + 2;

};

等号左边

int 代表Block的返回值类型

(^myBlock) ^是块标识符,后边是对象名称

(int) 是参数列表的类型,可以有多个参数,也可以为0个,里面为(void)

等号右边

^int  同样是标识符和返回值类型,此处的返回值类型可以省略

(int num1)  这里是参数列表的参数类型 和 参数名,这个地方必须有参数名

{ }       是Block的内部实现

;         最后以分号结尾    


3.调用:Block对象,通过块对象名调用

调用上面的

int a = myBlock(7);

nslog(@"a = %d",a);

4.Block中按参数和返回值类型区分也有四种分配

(1)有参数无返回值

void  (^mab)(int) = ^int(int num2) {


};

(2)无参数有返回值

int  (^mab2)(void) = ^int(void) {

  return 2;

};


nslog(@"b = %d",mab2());     // 当Block没有返回值的时候,调用这个block时也要加上();


(3)无参数无返回值

void (^mab3)(void) = ^void(void) {

   nslog(@"这是一个无参数无返回值的block方法");

};

mab3();

(4)有参数有返回值

int (^mab4)(int) = ^int(int num3) {

return num3;

};

NSString *(^mab5)(NSString *) = ^NSString *(NSString *str) {

NSString *result =  [str stringByAppendingString:@"你好"];

     return result;

};


NSString *str1 = mab5(@"明天");

NSLog(@"str1 = %@",str1);


5.函数指针定义

int sum(int x,int y);

int sum(int x,int y){

   return x + y;

}

typedef  int(*SUM)(int x,int y);


调用


SUM p = sum;

int sum1 = p(2,3);

nslog(@"sum1 = %@",sum1);





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值