(一)block作用:与Extension区分
- 专门存储一段代码,可以有参数、可以有返回值
- 将一个臃肿的类分为多个模块,方便后期代码维护
- 对一个类进行扩展,使用分类为已经存在的类添加方法
- 是一个数据类型
- 并不是任意的代码都能放进去,需要提前指定block是否有参数、是否有返回值
- 一旦指定后,此block只能存储类似的代码块了
eg:声明1个block变量,返回值为void,参数是1个int类型,这个时候此block只能存储无返回值并且只有1个int参数的代码段。
eg:声明1个block变量,返回值为void,参数是1个int类型,这个时候此block只能存储无返回值并且只有1个int参数的代码段。
声明block变量的语法格式:

无论后面代码段是否有返回值,返回值类型可以不写!系统会根据return自动确定返回值类型;若没有return则会认为没有返回值。
问题:定义block的时候要写很长一串,就像下面,类型很长。 解决办法:typedef使用,一个长类型代替。
对于block简洁替代 
对于block修改变量
如果硬要修改局部变量,则加上“_ _block”
右边就不报错了