美文网首页
Block代码块

Block代码块

作者: kangomake | 来源:发表于2019-10-09 09:39 被阅读0次
使用 Blocks 截获局部变量值
int a = 10, b = 20;

void (^myLocalBlock)(void) = ^{
    printf("a = %d, b = %d\n",a, b);
};

a = 11;
b = 21;
myLocalBlock();    // 打印结果:a = 10, b = 20
a = 12;
b = 22;

myLocalBlock();    // 打印结果:a = 10, b = 20

为什么两次打印结果都是 a = 10, b = 20?
明明在第一次调用 myLocalBlock(); 之后已经重新给变量 a、变量 b 赋值了,为什么第二次调用 myLocalBlock(); 的时候,使用的还是之前对应变量的值?
因为 Block 语法的表达式使用的是它之前声明的局部变量 a、变量 b。Blocks 中,Block 表达式截获所使用的局部变量的值,保存了该变量的瞬时值。所以在第二次执行 Block 表达式时,即使已经改变了局部变量 a 和 b 的值,也不会影响 Block 表达式在执行时所保存的局部变量的瞬时值。
这就是 Blocks 变量截获局部变量值的特性。

 摘自:作者:行走少年郎
 链接:https://www.jianshu.com/p/ab047cd47218

相关文章

  • iOS block的使用

    block的使用 Block 又称为“块” 或 “代码块”,作用是用来保存代码。block基本格式: 1、使用ty...

  • iOS Block基本使用(一)

    什么是Block?Block 又称为“块” 或 “代码块”,作用是用来保存代码,保存在其内部的代码块 如果Bloc...

  • iOS block

    什么是Block Block 又称为“块” 或 “代码块”,作用是用来保存代码,保存在其内部的代码块 如果Bloc...

  • Block代码块

    使用 Blocks 截获局部变量值 为什么两次打印结果都是 a = 10, b = 20?明明在第一次调用 myL...

  • 深入学习Block

    深入学习block 首先,什么是block?block其实就是一个代码块,把你想要执行的代码封装在这个代码块里,等...

  • 一篇文章看懂iOS代码块Block

    一篇文章看懂iOS代码块Block 一篇文章看懂iOS代码块Block

  • iOS-Block的详解

    学习Block的感悟 一. iOS代码块Block 1.1 概述 代码块Block是苹果在iOS4开始引入的对C语...

  • block 内存管理

    block修改变量 示例代码 __block 会把变量包装成一个结构体 block block 代码块/内存管理/...

  • Block的基本使用

    1.Block代码块的基本使用 Block的作用Block主要用来保存一段代码Block可以封装一段代码,这段代码...

  • Block

    block.png iOS代码块Block 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实...

网友评论

      本文标题:Block代码块

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