A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zlc 中级黑马   /  2015-7-13 15:04  /  894 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

(1)在block内部可以访问block外部的变量
在block内 部可以使用外部变量
但是注意:这是新的内存空间变量
(2)局部变量在栈区
在 block中使用局部变量,会将局部变量拷贝一份在block中,block一般在堆区
例如:
int m=10;
void (^myBlock)()=^{
NSLog(@"m=%d",m);
};
myBlock();
当定义block的时候,block会把外部变量的值以const的方式(在block中m的值不能被修改)复制一份,存放到block所在的内存中
但是在代码块内部定义的变量会被保存到栈区。
注意:若定义const m=10,则不能再给m赋值

__block int m=10;//不再以const的方式拷贝
void (^myBlock)()=^{
m=100;
NSLog(@"m=%d",m);
};
myBlock();
打印出m=10因为0,

1 个回复

倒序浏览
补充:在block中可以直接修改全局变量
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马