黑马程序员——Block数据类型

Block数据类型,又被称为代码段。因为它可以封装一段代码。苹果官方建议多用block。因为在多线程控制、异步任务,集合遍历、集合排序、动画转场等方面用的很多。

Block的特点:

1.Block 用于封装一段代码,并可以在任何时候执行。

2.Block 可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。

Block的定义:

例:int(^sum)(int ,int) = ^(int a,int b){

return a+b;

}

从形势上看和指向函数的指针比较像

例:int(*p)(int,int) = sum;   //指针p 指向sum函数

他们之间也是有共同点的:

1.都可以保存代码;2.都有返回值;3.都有形参;4.调用方式 一样。

用typedef 定义block类型:

typedef  int(^MyBlock)(int,int);          //重新定义 后就可以用MyBlock定义新变量了。

MyBlock   sumBlock=^(int a,int b ){

return a+b;

};

注意点:

在默认的情况下block内部可以访问外部的局部变量,不能修改。

给外部的局部变量加上__block(block前有两个_连在一块)关键字后,这个局部变量就可以在block内部修改了。

例:  __block int sum = 10;

int (^MyBlock)(int)=^(int num){

sum++;

return num+sum;

};

http://www.itheima.com/

上一篇:七层协议&网络配置


下一篇:Unity3D - 资源管理