objective-c 编程基础(3.8 block)

block,块。

定义

block是一个代码段。主要有3方面的作用:

  • 保存一段代码,当作函数调用。
  • 主要用来做回调。
  • 除了可执行代码外,还可以包含变量。

格式

double (^multi) (double,double) = ^(double a, double b) {
    return a * b;
};

double:返回值类型,如果没有返回值则为void

(^multi):块定义需要有一个^标记,multi是块名称

(double,double):参数类型列表,如果没有参数则为void

^(double a, double b):以^开头的参数列表,如果没有则为void,也可以省略

{}:block体,相当于函数体

在实际使用中,可以使用typedef定义block。如下图所示:

typedef double(^CalBlock) (double,double);

CalBlock multi2 = multi;//相同返回值和参数类型的block就是同一类型block,可以直接赋值
CalBlock add = ^(double a,double b) {
	return a + b;
  };

使用

使用block主要有3种用途:

  • 直接当作函数使用
  • 当作普通变量使用
  • 作为函数的参数

访问和修改变量

  • block可以访问全局变量和局部变量
  • block默认不能修改变量,需要将变量声明为_block才能修改
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值