Block源码分析系列
Deft_MKJing宓珂璟
并非所有流浪者都迷失了自我
展开
-
iOS Block源码分析系列(四)————__block和Block的循环引用
__block变量生成的会跟着Block从栈上复制到堆上,例如有两个Block使用了这个__block变量,一开始和Block一样是初始化在栈上的,但是当有个Block复制到堆上的时候时,__block也跟着被复制,当剩下的Block也一并被复制到堆上的时候,上一节有讲,Block和__block其实都是对象,因此__block的引用计数就会增加,当配置在堆上的Block废弃的时候,_原创 2016-11-15 22:43:42 · 1302 阅读 · 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:29 · 2363 阅读 · 1 评论 -
iOS Block源码分析系列(三)————隐藏的三种Block本体以及为什么要使用copy修饰符
到这个阶段,我们用C的结构编译的代码以及源码能看到Block结构体内部的isa指针是指向_NSContreteStackBlock的,其实这只是其中的一种,分别还有_NSContreteGlobalBlock 和 _NSContreteMallocBlock,可以根据命名的后缀看出来StackBlock是设置在栈上的,GlobalBlock就类似全局变量,设置在程序的数据区域(.data区原创 2016-11-15 00:27:30 · 4432 阅读 · 0 评论