1.block底层原理是什么?本质是什么?
block 本质也是一个OC对象,也是一个isa指针
block封装了OC对象同时封装了OC的函数调用
2.__block的作用是什么?有什么注意的点?
为了保证block内部能够正常访问外部的变量,block有个捕获机制
auto:值传递。局部变量默认有一个auto变量,离开函数大括号(作用域),就自动销毁,如 int a = 2 相当于 auto int a = 2 ;auto不可用于全局变量,只能用于局部变量
static:指针传递。
NSGlobalBlock类型:block内部没有访问auto变量的
NSStackBlock类型: block内部访问了auto变量
NSMallocBlock类型: NSStackBlock 调用了copy
将block赋予strong属性的时候,默认进行一次copy操作;
gdc的block都是在堆上面的