美文网首页
九、Block之(一)Block内部结构及调用本质

九、Block之(一)Block内部结构及调用本质

作者: yqc5521 | 来源:发表于2019-04-15 18:25 被阅读0次

    一、Block内部数据结构

    Block结构组成
    Block结构图分析
    1.调用分析
    调用分析1
    简化后的代码1
    调用分析2
    调用分析3
    调用分析4
    2.关于block调用中 block->FunPrt()的理解

    block表面上来看是没有FuncPrt的变量,按理说是不可能被调用的,因为它被强转为 __block_impl ,为什么可以强转呢?因为block的类型为 __main_block_impl0 的结构体,它的第一个成员变量类型为__block_impl的结构体类型,因此 __block_impl 的内存地址就是__main_block_impl0结构体的地址,因此可以通过指针找到这个成员变量。
    还可以理解为:__main_block_impl0的内存布局原来是这样的


    原来__main_block_impl0的内存布局

    但通过内存布局的角度,可以转换为下面这样的


    本质上的__main_block_impl0的内存布局

    相关文章

      网友评论

          本文标题:九、Block之(一)Block内部结构及调用本质

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