什么是block
封装函数及其上下文的对象
block内存管理
block分为
NSConcreteGlobalBlock
在.data全局数据区,NSConcreteMallocBlock
在堆区,NSConcretaStackBlock
在栈区。当对NSConcreteMallocBlock
进行copy时,应用计数器增加,当对NSConcretaStackBlock
进行copy后会到堆区,并且__forwarding指针会指向堆区的__block变量,堆区的__forwarding指针指向自身的__block变量。当对NSConcreteGlobalBlock
后什么也不做。
截获变量

__block
对截获变量进行赋值的时候需要__block修饰,操作不需要。被__block修饰的基础数据类型,最终会被编译成一个含有__forwarding的指针。