1.可以像调用函数那样使用block,但区别在于block可以定义在方法内。也可以把块赋给变量,像使用其他变量那样使用它。
2.在声明块的范围里,所有变量都可以为其所捕获,这是Block的强大之处。如:
int add = 5;
// 定义块
int (^addBlock)(int a , int b) = ^(int a , int b) {
return a + b + add; // 使用了定义块之外的变量
};
int result = addBlock(1 , 2);
但注意,默认情况下,为块所捕获的变量,是不可以在块内修改的。除非,在声明变量的时候加上 __block修饰符。如
int __block add = 5;
3.可以实现控制器间的传值