块(block):类似于定义一个匿名的函数。至于其他什么用处我就不知道了

块的定义:

^[块返回值类型](形参类型1 形参1, 形参类型2 形参2,。。。)

{

  //块执行体

}

跟函数语法格式的差别:

1.定义块必须以^开头

2.可以省略块返回值类型

3.定义块无须指定名字

4.如果没有形参,()不能省略,一般用void充当占位符

如果还要接下来还要调用定义好的块,可以将块赋给一个块变量;

定义块变量的语法格式:

块返回值类型(^块变量名)(形参类型1,形参类型2,...);

块与局部变量

块可以访问局部变量,但不能修改局部变量的值;

块在定义时,会将局部变量的值传入到块中,之后局部变量改变,对块不造成任何影响;

如果需要修改局部变量的值,而且不希望将局部变量的值保存在块中,需要用 _block 前缀来定义局部变量;

使用typedef定义块类型

typedef 块返回值类型(^块类型)(形参类型1[形参名1],形参类型2[形参2],...);

定义块变量用2个好处:

(1)可以重复定义几个块变量

(2)使用块类型定义函数参数,可以定义带块参数的函数。

#warming 怎么定义使用带块参数的函数?

05-08 08:33