IOS中block的声明定义和使用 一

对于IOS中Block得使用方法,以下我对Block的使用进行简单的介绍

1:首先声明一个Block指针

有参有返回值的Block的声明方式如下:

无参和无返回值的

void (^myBlock)(void);

有参有返回值的

int (^myBlock)(int,double);

总结:

返回类型  (^Block名称)(参数类型,...);


2:Block的定义

^(int b){

NSLog("%d",b);

return b;

};

总结:

^(参数类型){

Block主体;

};

Block实体开头是“^”,接着是由小括号所包起来的参数列(比如 int a, int b, int c),行为主体由大括号包起来,专有名字叫做block literal。行为主体可以用return回传值,类型会被compiler自动辨别。如果没有参数列要写成: ^(void)。

具体的使用方法如下:

<span style="white-space:pre">	</span>int (^my)(int,int);
        my = ^(int x,int y){
             return x+y;
         };
        
        NSLog(@"%d",my(5,6));

结果:11

这是代表Block会回传输入值的相加值(int a 就是参数列 return a*a; 就是行为主体)。记得行为主体里最后要加“;”,因为是叙述,而整个{}最后也要加“;”,因为Block是物件实体。

3:单Block代码块的使用方法

double sum = ^(double x,double b){return x+b;}(4,10);
        NSLog(@"sum=%lf",sum);
结果:14.000000
例如以上代码:

定义了一个Block代码块,返回值为double,参数为double。最后(4,10)意思是指传一个4和10作为x,b的输入参数的值。

最后结果输出14.000000

如果是无返回值的Block代码块该怎么写?

答:据本人测试并未测试出不使用Block指针的情况下纯Block代码块无返回值现象。故断定(单Block代码块的使用方法)必须有返回值。在第1点中我们也强调了:行为主体可以用return回传值,类型会被compiler自动辨别。所以如果想声明一个无返回类型的Block,还是请使用Block指针先声明好,然后再使用。

附:此点如有错误,请大家指正。感谢不尽!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值