码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-02-05 11:42:42      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:封装   fill   span   rip   shu   form   gem   --   图片   

__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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

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

标签:封装   fill   span   rip   shu   form   gem   --   图片   

原文地址:https://www.cnblogs.com/feng9exe/p/12262773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!