Block的类型

作者: 南城同學 | 来源:发表于2019-08-26 22:31 被阅读0次
block有3种类型,可以通过调用class方法或者isa指针查看具体类型,最终都是继承自NSBlock类型
  • __NSGlobalBlock__( _NSConcreteGlobalBlock )
  • __NSStackBlock__ ( _NSConcreteStackBlock )
  • __NSMallocBlock__ ( _NSConcreteMallocBlock )

区分:
  • 访问auto变量的block -->存储在栈中的 __NSStackBlock___;

  • 没有访问auto变量的block -->存储在数据段中的 __NSGlobalBlock__;
    ⚠️:__NSStackBlock___是存储在栈上的,存在的隐患就是随时可能被销毁。所以在ARC环境下,会自动对block进行一次copy操作,将其转换为存储在堆上的__NSMallocBlock__

  • 每一种类型的block调用copy后的结果如下所示:


相关文章

  • iOS原理篇(五):Block探究

    Block原理 Block变量捕获 Block类型 copy操作和Block内部访问对象类型的变量 __block...

  • 9 Block详解

    1.明白如何定义block类型 定义Block类型: typedef 返回值类型 Block名字 参数 block...

  • iOS block 为什么官方文档建议用 copy 修饰

    一、block 的三种类型block 三种类型:全局 block,堆 block、栈 block。全局 block...

  • iOS 常见面试题 -- block

    一、block的本质 二、block的类型 block 有三种类型分别如下: 如何区分block的类型 三、blo...

  • Block类型和捕获变量

    Block类型 1:类型区别特征 Block是OC的对象,他也有类型,我在打印[block class]的时候可以...

  • Block

    Block的变量捕获(capture) Block的类型 如何区分Block的类型 MRC:Global:没有访问...

  • 主题四《Block》

    1、block的本质 2、block的捕获 3、block的类型 4、block的copy 5、对象类型的auto...

  • iOS Block

    Block block 类型 block主要有三种类型 NSGlobalBlock:全局block,存储在全局区 ...

  • iOS底层:Block

    block的本质 block的变量捕获(capture) block的类型 block有3种类型,可以通过调用cl...

  • Block实现原理

    主要介绍block的类型和底层分析 block类型 block主要由三种类型 NSGlobalBlock:全局bl...

网友评论

    本文标题:Block的类型

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