Objective-C block的实现
作者:
幸运的小强本人 | 来源:发表于
2016-03-04 08:18 被阅读42次
Block数据结构定义,如下:

Block数据结构定义
struct Block_descriptor {
unsigned long int reserved;
unsigned long int size;
void (*copy)(void *dst, void *src);
void (*dispose)(void *);
};
struct Block_layout {
void *isa;
int flags;
int reserved;
void (*invoke)(void *, ...);
struct Block_descriptor *descriptor;
/* Imported variables. */
};
-
isa 指针,所有对象都有该指针,用于实现对象相关的功能。
-
flags,用于按bit位表示一些block的附加信息,本文后面会介绍在block copy的实现代码对该变凉的使用。
-
reserved, 保留。
-
invoke, 函数指针,指向具体的block实现的函数调用地址。
-
descriptor,表示该block的附加描述信息,主要是size 大小,以及copy和dispose函数指针。
-
variables,capture过来的变量,block能够访问它外部的局部变量,就是因为将这些变量或其地址复制到了结构体中。
本文标题:Objective-C block的实现
本文链接:https://www.haomeiwen.com/subject/fqdokttx.html
网友评论