博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Block 在不同情况下的变量存储区域
阅读量:5981 次
发布时间:2019-06-20

本文共 539 字,大约阅读时间需要 1 分钟。

hot3.png

一.如果只使用全局或静态变量或不使用外部变量, 那么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块外地址相同;

205908_QSY8_1389202.png

转载于:https://my.oschina.net/zhangjie9142/blog/501419

你可能感兴趣的文章
html集锦
查看>>
链表与顺序表
查看>>
ArcEngine对Blob字段赋值的方法
查看>>
Meeting Rooms II
查看>>
LeetCode 514: Freedom Tail
查看>>
windows phone 文件管理
查看>>
关于C语言中的typedef
查看>>
vs2013 solution文件解析
查看>>
前端开发精华文收集
查看>>
js实现可拉伸移动的div
查看>>
初步了解vue的组件
查看>>
ORA-24324: service handle not initialized 错误
查看>>
iframe有那些优缺点?
查看>>
很让人青睐的12个数据科学Python库
查看>>
货代英语--------澳大利亚包装声明
查看>>
数据预处理—独热编码
查看>>
蓄水池问题
查看>>
K邻近回归算法
查看>>
线程范围内共享变量的概念与作用
查看>>
5. ViewState原理
查看>>