
Block源码分析系列
Deft_MKJing宓珂璟
并非所有流浪者都迷失了自我
-
原创 iOS Block源码分析系列(四)————__block和Block的循环引用
__block变量生成的会跟着Block从栈上复制到堆上,例如有两个Block使用了这个__block变量,一开始和Block一 样是初始化在栈上的,但是当有个Block复制到堆上的时候时,__block也跟着被复制,当剩下的Block也一并被复制到 堆上的时候,上一节有讲,Block和__block其实都是对象,因此__block的引用计数就会增加,当配置在堆上的Block 废弃的时候,_2016-11-15 22:43:421059
0
-
原创 iOS Block源码分析系列(二)————局部变量的截获以及__block的作用和理解
上一篇简单介绍了基本Block的内部源码转换以及内部参数结构分析点击打开Block第一篇传送门 这次介绍一下Block是如何截获自动变量以及__block是什么原理???直接上代码#include "stdio.h" int main(){ int a = 100; int b = 200; const char *ch = "b = %d\n"; void (^...2016-11-13 19:28:291888
1
-
原创 iOS Block源码分析系列(三)————隐藏的三种Block本体以及为什么要使用copy修饰符
到这个阶段,我们用C的结构编译的代码以及源码能看到Block结构体内部的isa指针是指向_NSContreteStackBlock 的,其实这只是其中的一种,分别还有_NSContreteGlobalBlock 和 _NSContreteMallocBlock,可以根据命名的后缀看 出来StackBlock是设置在栈上的,GlobalBlock就类似全局变量,设置在程序的数据区域(.data区2016-11-15 00:27:303925
0