关于Block的一些初步认识

从iOS书本上看到的,几点关于block:

(1)对于局部变量,block内不能够对其进行赋值,只能读取值。进行赋值的话,即会报错。

(2)在定义了block之后,再次对局部变量赋值,二次赋值无效。原因:在定义block时,系统把局部变量的值保存在块中,而不是在使用块时,去调用局部变量,因此,在定义block之后,对block中需要调用的局部变量,进行赋值,无效。

(3)如果想要在执行block时,即时访问,块中的局部变量,同时可以在块中修改局部变量。则可用__block修饰该局部变量。即可达到目的。

以上三点,使用,一小段程序,进行说明,更加明显。

int s = 10;

void (^nslogS)(void) = ^(void){

       s = 15;//程序报错,提示不能进行赋值,注释之后无错

       NSLog(@"%d",s);

}

s = 13;

nslogS();//调用块

输出结果为:10;

__block int s = 10;

void (^nslogS)(void) = ^(void){

      NSLog(@"%d",s);

       s = 15;//不报错

       NSLog(@"%d",s);

}

s = 13;

nslogS();//调用块

输出结果为:第一次输出13,第二次输出15.


以上都是针对局部变量,block的影响,那么全局变量呢?

网上搜索一些相关内容:该篇微博:http://blog.sina.com.cn/s/blog_b0c5954101017zfr.html,看起来很详细,但是看完没有具体的概念。

另外这篇好像更加针对iOS开发:http://blog.csdn.net/jasonblog/article/details/7756763 。

第三篇,也可供参考:http://www.cnblogs.com/tangbinblog/p/4146728.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值