美文网首页
Block变量传递

Block变量传递

作者: cjdale | 来源:发表于2018-07-03 22:23 被阅读0次

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变量是指针传递

总结:

  • 如果是局部变量,Block是值传递

  • 如果是静态变量,全局变量,__block修饰的变量,block都是指针传递

相关文章

  • block

    1.自动变量是以值传递方式传递到Block的构造函数里面去的。Block只捕获Block中会用到的变量。由于只捕获...

  • iOS __block修饰变量时的底层原理

    总结:为什么Block内部不能改变自动变量(就是局部变量)的值 自动变量是以值传递方式传递到Block的构造函数里...

  • Block的使用

    block的定义 block内部使用变量 如果block访问的外部变量是局部变量,那么就是值传递,外界变了不会影响...

  • block 原理总结

    block 对变量的引用: 局部变量,传递的是值,因为局部变量可能在 block 执行之前就被销毁,所以传递的是值...

  • Block变量传递

    1、局部变量 打印结果为: 1 此时block变量是值传递 2、全局变量 打印结果为: 4 此时block变量是指...

  • 笔记:iOS Block的基本使用

    目录 Block概述 Block定义方式 Block保存代码 Block传值 Block对外部变量的传递 Bloc...

  • 【block第一篇】block值捕获与类型

    1.Block的值捕获Capture 说明对于block中使用的auto变量(一般的局部变量),block是值传递...

  • Block内存管理

    __block修饰符所干的事 我们在经常会需要在block修改外部变量,而变量是值传递的时候,我们在block里是...

  • iOS-block全局变量和局部变量的引用

    1、全局变量,block可以进行读取和修改。 2、局部变量,block只能读取,不能修改局部变量。这个时候是值传递...

  • iOS 之 block(4.2)

    上一章节讨论了,block 本地变量,block 内部 变量,内部静态变量的问题, 以及参数传递的问题。这接讨论主...

网友评论

      本文标题:Block变量传递

      本文链接:https://www.haomeiwen.com/subject/rvfsuftx.html