在开发中Block是经常使用的,那我们就得知其然,知其所以然。
Block是什么?
Block可以封装一个匿名函数为对象,并捕获上下文所需的数据,并传给目标对象在适当的时候回调。我们使用Block
的目的其实就是回调传值,那我们去看看Block
的底层,再深入了解一下Block
。
Block的底层
Block
的底层实现是结构体,和类的底层实现类似,都有isa
指针,可以把Block当成是一个对象。
Block_layout
是block
结构体的底层结构,其源码如下:
// Block 结构体
struct Block_layout {
//指向表明block类型的类
void *isa;//8字节
//用来作标识符的,类似于is