美文网首页
Block相关

Block相关

作者: VinZZZZ | 来源:发表于2019-01-28 16:40 被阅读4次

Block

一:结构相关
Block是一个包含了上下文变量的对象,该对象包含了_block_impl结构体,上下文变量同类型的成员变量(block函数体内用到的,加上了 _block修饰符),以及一个Desc结构体(可不关注)。在定义block时,调用了该对象的构造函数, __block_impl 中的isa指针标明其为一个对象,(值可为 NSGlobalBlock, NSStackBlock, NSMallocBlock中的一种),block函数体被封装成一个函数,并由__block_imp->FuncPtr所指向,上下文变量也作为参数传入构造函数。

二:内存相关

  1. MRC下,若block函数体中包含了上下文变量,默认创建的是stack类型的block,因此需要用copy将其拷贝到堆上(构造一个MallocBlock),放在因退栈而被释放;若无上下文变量,则为GlocalBlock.
  2. ARC下, 默认创建的MallocBlock,因此无需copy修饰, strong即可。

参考:
https://blog.csdn.net/abc649395594/article/details/47086751
https://blog.csdn.net/Deft_MKJing/article/details/78582933

https://www.jianshu.com/p/b74598269140

相关文章

  • block相关

    是写在方法里的,在方法里定义个block,有返回值的,以;结尾,block只有被调用的时候才能执行 {} 里的代码...

  • Block相关

    bock常用写法: 1、无返回值 & 无参数 2、有返回值 & 无参数 3、有返回值 & 有参数 4、 block...

  • Block相关

    Block基本使用 1.1、block声明:返回值(^block变量名)(参数)void(^block)(); 1...

  • Block相关

    https://www.jianshu.com/p/4e79e9a0dd82

  • Block相关

  • Block相关

    Block 一:结构相关Block是一个包含了上下文变量的对象,该对象包含了_block_impl结构体,上下文变...

  • Block相关

    类型 1.NSGloabalBlock 全局block,存储在全局区 该block无参数,无返回值,内部也没有引用...

  • Block相关

    整理一下自己学到的知识,方便以后查看 使用block时什么情况会发生引用循环,如何解决? 一个对象中强引用了blo...

  • Block 初见

    Block 初见 介绍 iOS block 的相关知识 目录 Block 背景知识 Block 使用方式 Bloc...

  • block用法大全

    block语句块 如何解决block循环引用 高逼格理解block循环引用 block相关

网友评论

      本文标题:Block相关

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