block在其他编程语言中叫匿名函数或lambda。楼上的兄弟说得不错,block类似函数指针,封装一段操作代码,不但能像函数一样直接调用,还能像变量一样赋值给其他变量。
block最NB之处在于词法闭包,简单来说,你在一个方法,比如叫print:中定义了一个block,那么这个block中的代码和print:方法中的定义的其他局部变量一起形成了一个封闭的环境(闭包),block中可以直接访问print:方法的局部变量。但如果你定义一个新函数来实现block中的操作代码,然后在print:方法中调用它,那么在新函数中是无法直接访问print:方法中的局部变量的,你必须把局部变量当作参数传递给新函数。显然,这种情况下用block就方便多了
|