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

来源:互联网 发布:软件概要设计范文 编辑:程序博客网 时间:2024/04/30 08:20

对于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指针先声明好,然后再使用。

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

0 0
原创粉丝点击