ios 底层

Block是如何实现的?Block的数据结构是什么?__bloc

2020-09-11  本文已影响0人  Queen_BJ

block本质是一个对象,底层用struct实现。
数据结构如下:
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. */
};

__block作用:可以获取对应变量的指针,使其可以在block内部被修改。

__block数据结构
struct __Block_byref_i_0 {
void *__isa;
__Block_byref_i_0 *__forwarding;
int __flags;
int __size;
int val; //变量名
};

谈Objective-C block的实现

上一篇下一篇

猜你喜欢

热点阅读