block的底层实现
2018-11-13 本文已影响3人
微_涼
block有3中类型,根据它们在内存中的分布,划分为以下种类:
image.png
之所以会在内存中这样分布,和我们在使用block访问的变量有关系:
image.png
在ARC对的情况下,当我们访问了auto变量时,系统会自动调用copy方法,把stack类型的block转换成了malloc类型的block. 我们把block编译成C++代码时,如下图所示:
image.png
image.png
image.png
image.png
之所以会在内存中这样分布,和我们在使用block访问的变量有关系:
image.png
在ARC对的情况下,当我们访问了auto变量时,系统会自动调用copy方法,把stack类型的block转换成了malloc类型的block. 我们把block编译成C++代码时,如下图所示:
image.png
image.png
block的变量捕捉机制:
image.png