zoukankan      html  css  js  c++  java
  • __block的本质是变量的二次封装与引用----__forwarding

    __block变量的操作:

    1、型变操作:在编译时型变为结构体;

    2、在复制时,引发本体转移和分身问题。

    3、__forwarding的类型为型变类型;指向型变本体。

    4、在形式上与变量的深浅拷贝有一定相似之处。

    __block的本质是变量的二次封装与引用

    在编译时编译成封装的结构体。

    __block结构体变量的本体与分身。

    本体转移。

    struct __Block_byref_val_0 {

      void *__isa;

    __Block_byref_val_0 *__forwarding;

     int __flags;

     int __size;

     int val;}

    当把 __block 变量生成的结构体实例从栈复制到堆上时,会将成员变量 __forwarding 的值替换为复制目标堆上的 __block 变量(生成的结构体实例),如下图所示;

     
    复制 __block 变量


    作者:Tpphha
    链接:https://www.jianshu.com/p/41dd3b8eb822
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

     

  • 相关阅读:
    静态主席树
    uva 11107 Life Forms
    codeforce 605B. Lazy Student
    codeforce 606B Testing Robots
    codeforce 606C
    codeforce 606A
    uva 11019 Matrix Matcher
    uva 11468 Substring
    uvalive 4670 Dominating Patterns
    codeforce 603B
  • 原文地址:https://www.cnblogs.com/feng9exe/p/12262773.html
Copyright © 2011-2022 走看看