美文网首页
关于Block的理解

关于Block的理解

作者: 碧海云天V | 来源:发表于2020-04-08 18:14 被阅读0次

    Block是将函数及其执行上下文封装起来的对象。
    在开发过程中我们经常会用到Block处理一些事物,下面我们就对Block做一下简单的梳理。

    先上Demo


    Block捕获变量

    • 局部变量
    • 静态局部变量
    • 全局变量
    • 静态全局变量
    ->局部变量

    (1)基本数据类型局部变量
    基本数据类型:对于基本数据类型的局部变量截获其值(值传递)


    image.png

    (2)对象类型局部变量
    对象类型:对于对象类型的局部变量连同所有权修饰符一起截获(指针传递)


    image.png
    ->静态局部变量

    静态局部变量:对于静态局部变量是以指针形式截获的(指针传递)


    image.png
    ->全局变量

    全局变量:不截获(直接访问)


    image.png
    ->全局静态变量

    全局静态变量:不截获(直接访问)


    image.png

    __block修饰符

    一般情况下,对被截获变量进行赋值操作需要添加__block修饰符(注意区分赋值和使用)
    需要__block修饰符:对象类型、基本数据类型
    不需要__block修饰符:静态局部变量、全局变量、静态全局变量

    __block修饰的变量变成了对象 image.png

    Block的内存管理

    直接上图吧,比较直观。 IMG_839EB5ECE982-1.jpeg

    结语

    关于block常用的知识点在这里已经简单的总结了,如有不对之处,烦请指正vast0608@163.com谢谢!

    相关文章

      网友评论

          本文标题:关于Block的理解

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