码迷,mamicode.com
首页 > 其他好文 > 详细

Block 在不同情况下的变量存储区域

时间:2015-09-06 14:30:35      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

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

Block 在不同情况下的变量存储区域

标签:

原文地址:http://www.cnblogs.com/zhangzhaoyuan/p/4785363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!