美文网首页
__block修饰的变量为什么能在block里面能改变其值

__block修饰的变量为什么能在block里面能改变其值

作者: 紫云夕月 | 来源:发表于2019-05-18 09:27 被阅读0次

Block不允许修改外部变量的值,这里所说的外部变量的值,指的是栈中指针的内存地址。__block 所起到的作用就是只要观察到该变量被 block 所持有,就将“外部变量”在栈中的内存地址放到了堆中。进而在block内部也可以修改外部变量的值。

Block不允许修改外部变量的值,这里所说的外部变量的值,指的是栈中指针的内存地址。栈区是红灯区,堆区才是绿灯区。

block本质上也是一个OC对象,它内部也有个isa指针

block是封装了函数调用以及函数调用环境的OC对象

block是封装函数及其上下文的OC对象

相关文章

网友评论

      本文标题:__block修饰的变量为什么能在block里面能改变其值

      本文链接:https://www.haomeiwen.com/subject/jsuzaqtx.html