__block的本质是变量的二次封装与引用----__forwarding
Posted feng9exe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__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
变量(生成的结构体实例),如下图所示;
作者:Tpphha
链接:https://www.jianshu.com/p/41dd3b8eb822
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
以上是关于__block的本质是变量的二次封装与引用----__forwarding的主要内容,如果未能解决你的问题,请参考以下文章
C++_引用做函数的返回值_引用的本质---C++语言工作笔记032