Block封装了一段代码,可以在任何时候执行
Block 可以作为函数参数 或者 函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:blocks是inline(内联函数)的,并且默认情况下它对局部变量是只读的
苹果官方建议尽量多用blocks。在多线程,异步任务,集合遍历,集合排序,动画转场用的很多
语法 : int (^sum) = ^(int a,int b){
return a+b;
};
调用 int c = sum(1,2);
block可以访问外部变量但不能修改,如果外部变量用_block 关键字 修饰(_block int a;)那么在bloc内部就可以修改这个变量。