默认情况下,在block中访问的外部变量是复制过去的。但是可以加上 __block  来让其写操作生效。

原理:

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

__block 所起到的作用就是只要观察到该变量被 block 所持有,就将 外部变量 在栈中的内存地址放到了堆中。进而在 block 内部也可以修改外部变量的值。

Block 不允许修改外部变量的值,是考虑到了block的特性,block也属于 函数 的范畴,变量进入block,实际就是已经该变了作用域。在几个作用域之间进行切换,如果不加上这样的限制,变量的可维护性将大大降低。

最新文章

  1. CROSS APPLY应用实例
  2. 解决java.io.IOException: HTTPS hostname wrong: should be
  3. 关于dllimport的使用
  4. Java 有理数类 分数类 Rational类的设计与实现
  5. UVa 10004:Bicoloring
  6. 1.7.4.1 Function Queries-函数查询
  7. AndroidStudio支持新的NDK的操作使用
  8. 使用DX绘制3D物体时新手常犯错误,看不见物体时可以一一排查
  9. linux内存查看
  10. python多线程同步
  11. FCKeditor
  12. Bootstrap——一款超好用的前端框架
  13. JQuery Deferred 对象剖析
  14. bzoj2120 数颜色 分块
  15. hiho#1513 : 小Hi的烦恼 五维偏序
  16. makefile笔记5 - makefile变量
  17. IIs实验,中间件漏洞
  18. MFC为多个控件绑定同一个函数
  19. kubernetes install for centos
  20. org.springframework.web.util.NestedServletException Handler processing failed; n

热门文章

  1. win10环境下Android SDK下载安装及配置教程
  2. MongoDB - 2
  3. centos下etcd集群安装
  4. div 拖拽
  5. CentOS系统/tmp目录里面的文件默认保留多久
  6. Markdown学习示例
  7. os.path.dirname使用方法
  8. OO第一单元总结(表达式求导)
  9. RAxML安装
  10. linux----------fedora 27 如何打开ssh,可以远程链接