iOS APP 开发 OC 第十天,block

tags: OC 30 day

有哪些是数据类型?

int,double,float,char ...
既然是一个数据类型那么就可以声明这个数据类型的变量。所以block完全也可以声明一个block类型的变量。
不同类型的变量中可以储存不同类型的数据。

Block 是数据类型

那么block类型的变量中可以储存什么样的数据呢?

block 是一个数据类型,所以我们可以声明一个block类型的变量。block 类型的变量中专们储存一段代码,这段代码可以有参数也可以有反回值。

block 变量的声明

虽然block变量中是用来储存一段代码,但是一个block变量中并不是任意一段代码都可以存进去的是有限定的。也就是说,再声明block变量储存的代码段是否有参数,是否有反回值。一但指定以后,这个block变量中就只能储存这样的代码了。

声明一个block变量,反回值是void,参数是一个int类型的。
这个时候,这个block变量中就只能储存无反回值并且有一个int参数的代码>段。

声明block变量的语法格式:

反回值类型 (^block变量的名称)(参数列表);void (^myBlock1)(); //表示声明了一个block类型的变量叫做myBlock1// 这个变量只能储存没有反回值没有参数的代码段。

注意:

声明block变量的时候要指定这个block变量可以储存的代码段的反回值和参数描述,一但指定,这个block变量就只能储存这样的代码段了,其他格式的代码段无法储存。

初始化block变量

原理: 写一段符合block要求的代码段,储存到变量就可以了。代码段的书写格式:
^反回值类型(参数列表){代码段;};
写一段无参数无反回值的代码段:
^void(){NSLog(@"喵呜");};

这个时候,我们就可以将这段代码使用赋值符号储存到无反回值无参数要求的block变量中,当然也可以再声明block变量同时使用符合要求的代码段初始化。

void (^myBlock1)(); myBlock1 = ^void(){NSLog(@"喵呜");};

有返回值的代码段

^int(){    int num1 = 10 + 20;    return num1;};

我们就可以将这段代码复职给符合要求的block变量。

int (^myblock2)() = ^int(){    int num1 = 10 + 20;    return num1;};

有参数有返回值的代码段

^int(^myblock3)(int num1,int num2){int num3 = num1 + num2;return num3;};

所以我们可以将这段代码赋值给符合要求的block变量。

^int(^myblock3)(int num1,int num2) = ^int(int num1,int num2){int num3 = num1 + num2;return num3;};

注意

赋值给block变量的代码必须要符合block变量的要求。否则会报错。

如何执行储存在block变量中的代码段?

语法格式:

block变量名();

有参数就传参数,有反回值就接。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章