一、block的简介
block可以说是类似C语言的函数,苹果是推荐我们使用block的。block效率高,可以用来封装和保存代码,可以有返回值和形参,而且可以在任何时候执行。
block的标识符是 ^
从上面的2各例子可以看出,block有不同的类型,分别有:无参无返,无参有返,有参无返,有参有返4种类型
我们可以根据自己需求使用不同类型的block完成我们的代码实现。
二、block的基本使用
利用block封装代码
//无参无返形式
void (^block)() = ^{
// 你封装的代码
};
在你需要的时候调用block
我们在开发的时候就可以发现,我们使用的API有很多都是使用了block,因为block可以实现在不同时候不同视图之间的通信,因为block可以在任何时候任何地方执行,因此当我们在某个地方要实现某个功能的时候,又因为缺少参数或者缺少某个方法等等的原因,我们就可以考虑用block去帮我们实现
具体如何实现不同页面的通讯需要你自己体会去
还要注意的是
block访问外部变量
1)block内部可以访问外部变量;
2)默认情况下,Block内部不能修改外部的局部变量
3)给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改。
4)在block实现的内部不能使用self. 使用self.会引起循环引用
需要用__weak 修饰一下,例如:
__weak ViewController *VC = self;
void (^block)() = ^{
VC.string = @"hello work!";
};