Block 在不同情况下的变量存储区域
2015-09-05 20:48
363 查看
一.如果只使用全局或静态变量或不使用外部变量, 那么Block块的代码会存储在全局区;
二.如果使用了外部变量, 在ARC中, Block块的代码会存储在堆区;
在MRC中, Block快的代码会存储在栈区;
三.block默认情况下不能修改外部变量, 只能读取外部变量:
在ARC中, 外部变量存在堆中, 这个变量在Block块内与在Block块外地址相同;
外部变量存在栈中, 这个变量会被copy到为Block代码块所分配的堆中;
在MRC中, 外部变量存在堆中, 这个变量在Block块内与Block块外相同;
外部变量存在栈中, 这个变量会被copy到为Block代码块所分配的栈中;
四.如果需要修改外部变量, 需要在外部变量前面声明 __block
在ARC中, 外部变量存在堆中, 这个变量在Block块内与Block块外地址相同;
外部变量存在栈中, 这个变量会被转移到堆区, 不是复制, 是转移.
在MRC中, 外部变量存在堆中, 这个变量在Block块内与Block块外地址相同;
外部变量存在栈中, 这个变量在Block块内与Block块外地址相同;
二.如果使用了外部变量, 在ARC中, Block块的代码会存储在堆区;
在MRC中, Block快的代码会存储在栈区;
三.block默认情况下不能修改外部变量, 只能读取外部变量:
在ARC中, 外部变量存在堆中, 这个变量在Block块内与在Block块外地址相同;
外部变量存在栈中, 这个变量会被copy到为Block代码块所分配的堆中;
在MRC中, 外部变量存在堆中, 这个变量在Block块内与Block块外相同;
外部变量存在栈中, 这个变量会被copy到为Block代码块所分配的栈中;
四.如果需要修改外部变量, 需要在外部变量前面声明 __block
在ARC中, 外部变量存在堆中, 这个变量在Block块内与Block块外地址相同;
外部变量存在栈中, 这个变量会被转移到堆区, 不是复制, 是转移.
在MRC中, 外部变量存在堆中, 这个变量在Block块内与Block块外地址相同;
外部变量存在栈中, 这个变量在Block块内与Block块外地址相同;
相关文章推荐
- 装机——没什么(更改电脑硬盘分区格式)
- CSS 属性 :before && :after的用法,伪类和伪元素的区别
- OS---net start mysql 发生系统错误5
- 一步步开发自己的博客 .NET版(4、文章发布功能)百度编辑器
- 负数的补码怎么求的
- 求一个字符串中连续出现次数最多的子串
- 【发布】工业串口和网络软件通讯平台(SuperIO v2.2.4)
- Servlet+JSP+JavaBean开发模式(MVC)介绍
- best code #54 div 2 A 水
- arm的2级页表在Linux内核创建过程解析
- Javascript高级程序设计——BOM(浏览器对象模型)
- 数据库技术之rank、dense_rank、ntile、row_number函数的区别
- 在Openwrt 上使用迅雷远程下载功能
- web中的URL
- python 学习笔记(=)
- error: declaration may not appear after executable statement in block
- 【发布】工业串口和网络软件通讯平台(SuperIO v2.2.4)
- 2015/9/5 Python基础(9):条件和循环
- Android列表ListView控件的使用
- 1.OC第一个工程,类的设计,重构方法,构造函数