美文网首页
八.Block变量捕获

八.Block变量捕获

作者: 郝程序猿 | 来源:发表于2021-09-05 21:56 被阅读0次
image.png

以上block执行后打印结果为10 因为block结构体内部有个新的age被赋值为10 ,下面的age怎么改都不会影响到里面的age的值

block的变量捕获

针对上述的局部变量age 就是auto变量 就会捕获到block内部,但是是值传递

static变量

由上图可知 对于使用static修饰的局部变量被捕获到block内部后是传递的地址指针,所以后面的height更改为20后打印的结果就是20

image.png

这个打印后都是20 因为全局变量不会捕获,直接拿到最新值就可以

总结:局部变量为什么需要捕获,因为需要跨函数进行赋值,需要在内部进行存储,而全局变量则不需要,换言之全局变量在哪个函数中都可以获取到

image.png

对象也可以捕获到,因为self是个局部变量,在test函数中有两个隐藏参数,一个是self,一个是_cmd

image.png

对于_name来说,因为name为MJPerson的属性,其调用时self->_name进行调用,所以block内部会捕获self,并通过self进行获取

相关文章

  • block:block捕获变量

    一、block捕获变量根儿上的东西 1、block会捕获局部变量 2、block不会捕获全局变量二、block捕获...

  • Block变量捕获详解(一)

    什么是Block变量捕获block变量捕获就是在block内部创建一个变量来存放外部变量什么是值捕获block将外...

  • Block 第三次学习 感谢 MJ老师

    block 内部结构 Block block 变量捕获 变量类型捕获到block 内部访问方式局部变量auto(平...

  • OC基础-Block(2)

    OC基础-Block(2)Block的变量捕获为了保证block内部能够正常访问外部的变量,block有个变量捕获...

  • OC中的Block(二)

    block的变量捕获(capture) 为了保证block内部能够正常访问外部的变量,block有个变量捕获机制 ...

  • 八.Block变量捕获

    以上block执行后打印结果为10 因为block结构体内部有个新的age被赋值为10 ,下面的age怎么改都不会...

  • block变量的捕获(capture)

    ?为了保证block内部能够正常访问外部变量,block有个变量捕获机制 auto变量的捕获

  • Objective - C block(二)block的类型及捕

    (一)block 捕获变量类型 为了保证block内部能够正确访问外部的变量,block有一个变量捕获机制 (1)...

  • Objective-C Block深入源码

    1. Block捕获自动变量 如何捕获自动变量? Block转换为C函数之后,Block中使用的自动变量会被作为成...

  • 06.4-OC中block捕获对象类型的变量

    block捕获对象类型的变量 前面讲解的block变量捕获,我们讲解了block捕获基本数据类型的情况,下面我们再...

网友评论

      本文标题:八.Block变量捕获

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