iOS学习之旅 ------ block

1.定义
block是对函数上下文及其执行的封装。

2.实现结构体
block 结构体:
struct __block_impl_0 {
struct __block_impl impl;
struct __main_block_desc_0 *Desc;
int age;
}
impl结构体
struct __block_impl {
void *isa; // isa指针
void Flags; // 按位表示block的一些附加信息
int Reserved; // 保留变量
void *FuncPtr; // 函数指针,指向block要执行的函数
}


image.png

3.类型
共有三种类型的block,分别是全局block(_NSConcreteGlobalBlock),堆block(_NSConcreteMallocBlock),栈block(_NSConcreteStackBlock),存储位置位于.data,堆区和栈区。

copy操作:
GlobalBlock --------copy----------> 没有变化
StackBlock --------copy-----------> MallocBlock
MallocBlock --------copy-----------> 引用计数加一

4.循环引用
自循环引用
相互循环引用
多循环引用

解除:
_ _waek _ _block

链接: https://www.jianshu.com/p/9ff40ea1cee5

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.Block的本质 block本质是一个OC对象,它里面有个isa指针,封装了函数调用环境的OC对象,封...
    枫紫_6174阅读 3,733评论 0 2
  • 第一部分:Block本质 Q:什么是Block,Block的本质是什么? block本质上也是一个OC对象,它内部...
    sheldon_龙阅读 3,552评论 0 0
  • iOS-Block本质 参考篇:iOS-Block浅谈[https://www.jianshu.com/p/25a...
    super_2e20阅读 1,391评论 0 1
  • 参考篇:iOS-Block浅谈 前言:本文简述Block本质,如有错误请留言指正。 第一部分:Block本质 Q:...
    梦蕊dream阅读 61,604评论 41 323
  • 原文发布在个人博客 clang工具 block分类 block 结构 block调用 block类型以及ARC对b...
    黄河hg阅读 1,774评论 0 0