十、Block之(二)变量捕获

2019-04-15  本文已影响0人  yqc5521

1.捕获auto变量

auto变量,实质上就是局部变量的一种,默认为auto类型,离开作用域就会被销毁。例如:Int age = 0; 实质上是 auto Int age = 0


创建带auto类型参数的block 带有auto类型成员变量的__main_block_impl_0的结构
注:其中构造函数参数括号后面的用" : " 隔开的age(_age),本质上就是age = _age;

2.捕获static变量

创建带static类型参数的block
带有static类型成员变量的__main_block_impl_0的结构
函数调用时获取的是变量的指针

3.变量捕获总结

auto和static变量捕获对比

4.小小的疑问:为什么要捕获局部变量?

捕获局变量的原因说明

内部实现为跨函数访问


跨函数访问局部变量,无法实现,必须有一个保存局部变量的方法
上一篇 下一篇

猜你喜欢

热点阅读