Block基础

104 阅读1分钟

什么是block

封装函数及其上下文的对象

block内存管理

block分为NSConcreteGlobalBlock在.data全局数据区,NSConcreteMallocBlock在堆区,NSConcretaStackBlock在栈区。当对NSConcreteMallocBlock进行copy时,应用计数器增加,当对NSConcretaStackBlock进行copy后会到堆区,并且__forwarding指针会指向堆区的__block变量,堆区的__forwarding指针指向自身的__block变量。当对NSConcreteGlobalBlock后什么也不做。

截获变量

__block

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