ios developer tiny share-20161104

今天继续讲Objective-C的Block,上一节讲过,在作用域内,一般是一个方法体内,Block不可以修改外部的变量的值。这一节我们讲如何实现可以在Block内修改外部的变量,即使用__block修饰符修饰该变量。


下面是android developer官方文档的讲解:


Use __block Variables to Share Storage

If you need to be able to change the value of a captured variable from within a block, you can use the __block storage type modifier on the original variable declaration. This means that the variable lives in storage that is shared between the lexical scope of the original variable and any blocks declared within that scope.

As an example, you might rewrite the previous example like this:

__block int anInteger = 42;

void (^testBlock)(void) = ^{
	NSLog(@"Integer is: %i", anInteger);
};

anInteger = 84;

testBlock();

Because anInteger is declared as a __block variable, its storage is shared with the block declaration. This means that the log output would now show:

Integer is: 84

It also means that the block can modify the original value, like this:

__block int anInteger = 42;

void (^testBlock)(void) = ^{
	NSLog(@"Integer is: %i", anInteger);
	anInteger = 100;
};

testBlock();
NSLog(@"Value of original variable is now: %i", anInteger);

This time, the output would show:

Integer is: 42
Value of original variable is now: 100


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值