浅议block实现原理,block为什么使用copy关键字?
2016-06-23 12:27
337 查看
1、block是一个特殊的oc对象,建立在栈上,而不是堆上,这么做一个是为性能考虑,还有就是方便访问局部变量。
2、默认Block使用到的局部变量会被copy,而不是retain。所以,他无法改变局部变量的值。如果在变量前加上__block那么编译器不会复制变量,而是去找变量的地址,通过地址来访问变量,实际上就是直接操作变量。
3、另外block是在栈上分配的,所以一旦离开作用域,就会释放。因此要把block用在别处时,必须要copy一份。block不能保留,retain没有意义。待续。。。
2、默认Block使用到的局部变量会被copy,而不是retain。所以,他无法改变局部变量的值。如果在变量前加上__block那么编译器不会复制变量,而是去找变量的地址,通过地址来访问变量,实际上就是直接操作变量。
3、另外block是在栈上分配的,所以一旦离开作用域,就会释放。因此要把block用在别处时,必须要copy一份。block不能保留,retain没有意义。待续。。。
相关文章推荐
- CString文件路径 使用fopen打开
- android------ Camera组件的整体架构设计简介
- MySQL备份的shell脚本
- linux下I2C的读写
- 解析properties文件的简单方法
- Nginx配置文件说明
- Deep Copy cv::StereoBM 深度拷贝
- 如何修改linux 的SSH的默认端口号?
- Linux cp命令自动确认
- 详解Linux系统中的文件权限设置
- linux 的crontab任务中py脚本不执行的解决办法
- OpenCV人脸识别LBPH算法源码分析
- CentOS7下使用yum安装mysql
- centos6 yum安装最新版mysql5.7
- centos下安装pillow报ImportError: The _imagingft C module is not installed的解决方案
- Linux --- 清理内存和Cache的方法
- 高可用集群之heartbeat安装配置
- 每天一个Linux命令(07)--mv命令
- linux 修改时间并永久生效
- optimizer hints