iOS __block 关键字的底层实现原理 -- 堆栈地址的变更
2024-10-16 13:41:42
默认情况下,在block中访问的外部变量是复制过去的。但是可以加上 __block 来让其写操作生效。
原理:
Block 不允许修改外部变量的值,这里所说的外部变量的值,指的是栈中指针的内存地址。
__block 所起到的作用就是只要观察到该变量被 block 所持有,就将 外部变量 在栈中的内存地址放到了堆中。进而在 block 内部也可以修改外部变量的值。
Block 不允许修改外部变量的值,是考虑到了block的特性,block也属于 函数 的范畴,变量进入block,实际就是已经该变了作用域。在几个作用域之间进行切换,如果不加上这样的限制,变量的可维护性将大大降低。
最新文章
- CROSS APPLY应用实例
- 解决java.io.IOException: HTTPS hostname wrong: should be
- 关于dllimport的使用
- Java 有理数类 分数类 Rational类的设计与实现
- UVa 10004:Bicoloring
- 1.7.4.1 Function Queries-函数查询
- AndroidStudio支持新的NDK的操作使用
- 使用DX绘制3D物体时新手常犯错误,看不见物体时可以一一排查
- linux内存查看
- python多线程同步
- FCKeditor
- Bootstrap——一款超好用的前端框架
- JQuery Deferred 对象剖析
- bzoj2120 数颜色 分块
- hiho#1513 : 小Hi的烦恼 五维偏序
- makefile笔记5 - makefile变量
- IIs实验,中间件漏洞
- MFC为多个控件绑定同一个函数
- kubernetes install for centos
- org.springframework.web.util.NestedServletException Handler processing failed; n