block底层浅谈

函数指针是指向函数的指针变量。

C++里面的结构体相当于OC里面的类  类就有变量和方法

C++里面跟类名一样的方法是构造方法  构造方法是用来初始化当前方法的

blcok底层实现

首先会创建一个结构体   _main_block_impl_0

blcok变量 是函数指针 -> void(^blcokName)()  

block块对象 才是一个结构体 是有大量存储空间的

block块对象是结构体  结构体里面有自己的构造方法 来创建自己 构造方法里面需要传入4个参数

void *fp   保存一段函数 将来要执行的那个代码块

_main_block_desc_0 *desc  描述自己大小的一个结构体

 int _a  保存之前传递进去的变量(blcok)内部使用外部变量  只穿block内部用到的变量

int flags 仅仅是个标记

函数调用 其实就是找到fp记录的代码块,再传入block本身,在代码块中就能访问到block里面记录的变量_a的值。

你可能感兴趣的:(block底层浅谈)