浅谈OC中block

2022-06-01  本文已影响0人  萤火驻守心间

Block的循环引用:
block强引用self,self强引用block。解决方案:对self进行弱引用。

内部修改外部变量:
block不允许修改外部变量的值,这里的外部变量指的是栈中指针的内存地址。__block的作用是只要观察到变量被block使用,就将外部变量在栈中的内存地址放到堆中。

三种block:
1、NSGlobalBlock(全局):没有访问 auto变量 的block ,(.data区)数据区,一般存放全局变量, __NSGlobalBlock存放在这里
2、NSStackBlock(栈block):访问了auto变量 的block ,存放在栈区
3、NSMallocBlock(堆block):当一个__NSStackBlock调用了copy操作,返回的就是一个__NSMallocBlock,存放在堆区

上一篇下一篇

猜你喜欢

热点阅读