@iwanglong
2019-02-20T03:00:37.000000Z
字数 396
阅读 289
Block
iOS
Block
- Block是将函数及其执行上下文封装起来的对象
- Block调用即函数调用
截获变量
局部变量
- 基本数据类型
- 对象类型
- 对于对象类型的局部变量是连同所有权修饰符一起截获。
静态局部变量
- 全局变量 | 静态全局变量
__block修饰符
- 在需要对使用的变量进行赋值时需要添加__block修饰符
- 对 【静态局部变量(操作的指针)、全局变量、静态全局变量】不需要进行__block修饰
- __block 修饰的变量变成了对象
__forwarding指针是干什么的?
- 在栈上对变量的赋值操作,__forwarding指向栈上的变量
- 如果对block进行了copy操作,则栈上的__forwarding指向堆上的变量,堆上的__forwarding指向自身的变量。
- 不论在任何内存位置,都可以顺利访问同一个__block变量。
Block循环引用问题