BLOCK简单分析

2022-09-13  本文已影响0人  ios小喽喽

1、block的本质:是一个结构体,里面有一个isa指针;

图(1) 图(2)

2、底层结构:__block_impl、__main_block_desc_0、__Block_byref_a_0 *a;

图(3)

3、Block的分类:NSGlobalBlock、NSMallocBlock、NSStackBlock

    a、NSGlobalBlock:全局、在数据区;没有访问 auto变量

图(4)

    b、NSMallocBlock:存储在堆上

图(5)

    c、NSMallocBlock:存储在栈上,block捕获了自动变量,block没有执行过copy操作

图(6)

4、block的定义:

图(7) 图(8)

5、防止block循环引用:

        a、__weak typeof(self) weakSelf = self;__strong__typeof(weakSelf)strongSelf = weakSelf;

图(9)

    b、__block ViewController *vc = self;

图(10)

    c、直接在blcok里面传入需要释放的对象

图(11)
上一篇 下一篇

猜你喜欢

热点阅读