美文网首页
Objective-C block的实现

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能够访问它外部的局部变量,就是因为将这些变量或其地址复制到了结构体中。

相关文章

  • block原理

    c语言中的闭包 block解答题 block结构 唐巧之谈Objective-C block的实现

  • iOS中的Block一

    参考文章 《Objective-C高级编程》Blocks深入研究Block捕获外部变量和__block实现原理谈谈...

  • 04·iOS 面试题·Block 的原理,Block 的属性修饰

    前言 Block 在平时开发中经常使用,它是 Objective-C 对 闭包 是实现,定义如下: Block 是...

  • iOS里关于block的一些理解

    介绍 block实际上就是Objective-C语言对于闭包的实现。block配合上dispatch_queue,...

  • Objective-c Block

    block Block简介 block�实际上是Objective-c对闭包的实现。闭包允许一个函数访问声明该函数...

  • block的实现

    谈Objective-C block的实现 http://blog.devtang.com/2013/07/28/...

  • Block原理解析

    Block是什么? Block实际上是Objective-C对闭包的实现。 关于闭包的概念:In programm...

  • Block 01 - 底层实现

    Block 01 - 底层实现 Block 是一个封装了函数调用以及函数调用环境的 Objective-C 对象。...

  • block的使用

    block实际上就是Objective-C语言对闭包的实现。 NSString * ( ^ myBlock )( ...

  • iOS开发笔记-Block

    Block 实际上就是 Objective-C 语言对于闭包的实现。对于 Block 的基本认识和使用,这里推荐...

网友评论

      本文标题:Objective-C block的实现

      本文链接:https://www.haomeiwen.com/subject/fqdokttx.html