Block

Block

Block 是C语言的扩充功能。是带有自动变量(局部变量)的匿名函数

Block 几种类型

1、_NSConcreteStackBlock 该类的对象Block设置在栈上
2、_NSConcreteGlobalBlock 与全局变量一样,设置在程序的数据区域(.data区)中
3、_NSConcreteMallocBlock 该类的对象设置在有malloc 函数分配的内存块(堆)中

什么时候栈上的Block会复制到堆呢

1、调用Block的copy 实例方法时
2、Block作为函数返回值返回时
3、将Block赋值给附有__strong 修饰符id 类型的类或 Block类型成员变量时;
4、在方法名中含有usingBlock 的 Cocoa框架方法或GCD 的API 中传递Block时。

你可能感兴趣的:(Block)