iOS Block

2021-10-07  本文已影响0人  All_Be_Alright

Block

1、介绍

Block是将函数及其执行上下文封装起来的对象

2、代码编译

clang -rewrite-objc -fobjc-arc JMBlock.m
源码 编译后

JMBlock__method_block_impl_0

JMBlock__method_block_impl_0 __block_imp

JMBlockmethod_block_func_0:blcok内部具体实现部分

__JMBlock__method_block_func_0 调用

3、截获变量

clang -rewrite-objc -fobjc-arc JMBlock.m

编译前

编译前

编译后

编译后

4、__block修饰符

分析: 分析 分析2

5、Block的类型

栈上的、堆上的、全局的,三种类型

Block的类型

6、Block的Copy操作

Block的Copy操作 image-20211006215418733 堆上面的Block的销毁

7、__forwarding的作用

copy

8、block的循环引用

属性 != 成员变量 != 全局变量

成员变量_array会被block捕获

循环引用

答案

答案 问题2

答案:

答案1 答案2

如果block长时间不调用,循环引用就会一直存在

答案3
上一篇 下一篇

猜你喜欢

热点阅读