深入理解Block

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解Block相关的知识,希望对你有一定的参考价值。

参考技术A

函数指针

block

block本质上也是个OC对象,它内部也有个isa指针。

block捕获变量的规则如下:

Q:block如何捕获变量?

在ARC环境下,编译器会根据情况自动将栈上的block复制到堆上:

每一种类型的block调用copy后的结果:

Q:下面block分别属于什么类型? / 下面的输出是什么?

当block内部访问了对象类型的auto变量时

__block可以用于解决block内部无法修改auto变量值的问题。

编译器会把__block变量包装为一个对象,然后block捕获__block变量就是增加了一个指向这个对象的指针:

__forwarding指针可以使在栈上的__block变量和在堆上上的__block变量都能正确访问。

以上是关于深入理解Block的主要内容,如果未能解决你的问题,请参考以下文章

深入理解display属性

深入理解threadIdx

深入理解BSS(Block Started by Symbol)

Linux 深入理解inode/block/superblock

深入理解Linux文件系统与日志分析

深入理解和应用display属性