block有3中类型,可以通过 class方法或者 isa 指针查看具体类型,最终都是继承与NSBlock 的类型 有__NSGlobalBlock__,NSMallocBlock,NSStackBlock
这三种 block在内存中分配的位置是不同的
那么什么样的 block 是 NSGlobalBlock?什么样的 block 是 NSMallocBlock ?什么样的 block 是__NSStackBlock__ ?
为了能够准确的研究B lock 内存分配 一下代码是在非ARC环境下测试
如果 block 内部没有访问auto 变量 那么这个 block 就是 NSGlobalBlock 类型
int height = 10; ///全局变量
void testBlock() {
///globalBlock
void(^block1)(void) = ^ {
NSLog(@"hello world");
};
NSLog(@"%@",[block1 class]);
///MallocBlock
static int age = 10; ///静态变量
void(^block2)