iOS 底层探索篇 —— block(上)
1. block类型
block一共有三种类型:
全局block (NSGlobalBlock): 位于全局区,在block内部不使用外部变量,或者只使用静态变量和全局变量堆block (NSMallocBlock): 位于堆区,在block内部使用变量或者oc属性,并且赋值给强引用或者Copy修饰的变量栈block (NSStackBlock):位于栈区,与MallocBlock一样,可以在内部使用局部变量或者oc属性。但是不能赋值给强引用或者copy修饰的变量。
这里不使用外部变量,所以是NSGlobalBlock。

这里使用局部变量,所以是NSMallocBlock。

这里加了__weak,a变量没有被强引用持有,所以是NSStackBlock。

2. block 面试题
2.1 block 捕获外部变量-对外部变量的引用计数处理
这

本文探讨了Block的三种类型:全局、堆和栈Block,并详细解释了Block如何捕获和处理外部变量的引用计数,以及Block在内存拷贝中的行为。此外,还分析了Block的循环引用问题及其解决方案,包括使用__weak引用、__unsafe_unretained、创建临时对象和传参方法。最后,文章讨论了静态变量和Block结合可能导致的内存泄漏问题。
最低0.47元/天 解锁文章
3072

被折叠的 条评论
为什么被折叠?



