代码块本质上是和其余变量相似。不一样的是,代码块存储的数据是一个函数体。使用代码块是,你能够像调用其余标准函数同样,传入参数数,并获得返回值。函数
并且在iOS4以后,不少API都加入了Block做为参数适用,好比NSURLSessionDataTask中的complationHandler参数就是一个带有传入参数的block参数。作用域
block和通常的函数写法上区别不大,跟像是C/C++的函数写法,但惟一须要注意的是,在代码块外声明的变量,在block内是没法改变的,若想改变,必须加上 __block 修饰。io
有关block的做用域,当遇到相似的问题以后再更新。变量