iOS

iOS开发(9)block

2019-04-02  本文已影响101人  迷心迷

一、block的本质

1.png

二、block的变量捕获(capture)

为了保证block内部能够正常访问外部的变量,block有个变量捕获机制


2.png

auto变量的捕获


3.png

三、block的类型

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

4.png 5.png

2、每一种类型的block调用copy后的结果如下所示


6.png

四、block的copy

五、对象类型的auto变量

7.png

__weak问题解决

六、__block修饰符

1、__block的内存管理

2、__block的__forwarding指针


11.png

对象类型的auto变量、__block变量

12.png

3、被__block修饰的对象类型

七、循环引用问题

1、什么是循环引用


13.png

2、解决循环引用问题 - ARC

3、解决循环引用问题 - MRC

八、面试题 - Block

1、block的原理是怎样的?本质是什么?
封装了函数调用以及调用环境的OC对象

2、__block的作用是什么?有什么使用注意点?

3、block的属性修饰词为什么是copy?使用block有哪些使用注意?
block一旦没有进行copy操作,就不会在堆上
使用注意:循环引用问题

4、block在修改NSMutableArray,需不需要添加__block?

上一篇 下一篇

猜你喜欢

热点阅读