Block变量传递

2018-07-03  本文已影响0人  cjdale

1、局部变量

NSInteger a = 1;//局部变量
void(^block)(void) = ^{
    NSLog(@"a:%ld", a);
};
a = 2;
block();

打印结果为: 1

此时block变量是值传递

2、全局变量

NSInteger b = 3;//全局变量

void(^block1)(void) = ^{
    NSLog(@"b:%ld", b);
};
b = 4;
block1();

打印结果为: 4

此时block变量是指针传递

3、静态变量

static NSInteger c = 5;
void(^block2)(void) = ^{
    NSLog(@"c:%ld", c);
};
c = 6;
block2();

打印结果为: 6

此时block变量是指针传递

4、__block修饰变量

__block NSInteger d = 7;
void(^block3)(void) = ^{
    NSLog(@"d:%ld", d);
};
d = 8;
block3();

打印结果为: 8

此时block变量是指针传递

总结:

上一篇下一篇

猜你喜欢

热点阅读