什么是block
- block是将函数及其执行上下文封装起来的对象
源码解析
- 可以使用 ‘clang -rewrite-objc file.m’ 查看编译之后的文件内容
block截获变量特性
- 局部变量:对于基本数据类型截获其值,对于对象类型连同所有权修饰符(strong/weak/_unsafe_unretained) 一起截获
- 静态局部变量:以指针形式截获
- 全局变量: 不截获
- 静态全局变量: 不截获
__block修饰符
- 一般情况下, 对被截获变量进行赋值操作需要添加__block修饰符
- 静态局部变量, 全局变量, 静态全局变量不需要__block修饰符
block的内存管理

