美文网首页
Block本质

Block本质

作者: 程序猿_K | 来源:发表于2019-10-09 14:01 被阅读0次

Block本质

  • block本质上也是一个OC对象,它内部也有个isa指针,在__block_impl结构体中;

  • block是封装了函数调用以及函数调用环境的OC对象;

  • block的底层结构如下:

//block的底层实现就是__main_block_impl_0结构体
struct __main_block_impl_0 {
struct __block_impl impl;
struct __main_block_desc_0* Desc;
 __Block_byref_age_0 *age; // by ref
};
struct __block_impl {
  void *isa;//OC对象标志性指针
  int Flags;
  int Reserved;
  void *FuncPtr;//block执行的代码地址
};
static struct __main_block_desc_0 {
size_t reserved;
size_t Block_size;
//下面两个捕获非Object对象不会生成,用来内存管理
void (*copy)(struct __main_block_impl_0*, struct __main_block_impl_0*);//实现强弱引用
void (*dispose)(struct __main_block_impl_0*);//release操作
};
struct __Block_byref_age_0 {
  void *__isa;
__Block_byref_age_0 *__forwarding;
 int __flags;
 int __size;
 int age;
};

Block的变量捕获

变量捕获

Block类型

1.block有3种类型,可以通过调用class方法或者isa指针查看具体类型,最终都是继承自NSBlock类型

  • NSGlobalBlock ( _NSConcreteGlobalBlock )
  • NSStackBlock ( _NSConcreteStackBlock )
  • NSMallocBlock ( _NSConcreteMallocBlock )
    2.block类型转换
    block捕获变量.png
  • block调用copy


    block调用copy

相关文章

  • Block总结

    一、Block的底层结构及本质 (1)block本质: 从代码可以看出,Block的本质就是NSObject. 也...

  • OC底层原理(八):Block

    block是经常使用的一种技术,那么block的本质是什么呢? Block的本质 block本质上也是OC对象,它...

  • 理清 Block 底层结构及其捕获行为

    来自掘金 《理清 Block 底层结构及其捕获行为》 Block 的本质 本质 Block 的本质是一个 Obje...

  • 2019 知识点总结

    1、Block 释放 追问 (1)Block本质? Block本质就是一个OC对象,内部有isa指针。 Block...

  • iOS开发之Block原理探究

    Block概述 Block本质 Block调用 Block分类 Block循环引用 Block原理探究 Block...

  • Block详解-小码哥

    block本质 block的本质是封装了函数调用和函数调用环境的OC对象。 block结构 Block_layou...

  • iOS-底层原理28:block底层原理

    本文主要介绍:1、block的本质2、block捕获变量3、block的类型4、__block原理 本质 通过cl...

  • block系列文章总结

    iOS源码解析:Block的本质<一>iOS源码解析:Block的本质<二>Objective C block背后...

  • Block详解

    block的本质 先看block的简单实现 转为C++代码 查看Block的继承关系 结论: block本质上也是...

  • iOS Block详解

    第一部分:Block本质 Q:什么是Block,Block的本质是什么? block本质上也是一个OC对象,它内部...

网友评论

      本文标题:Block本质

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