ios bolck理解

2021-11-24  本文已影响0人  piggybear

blcok分为全局blcok,堆block,栈block

MRC
只要block没有访问外部变量,就是全局block。访问了外部变量,就是栈block。显示地调用[block copy]就是堆block。

ARC
只要没有访问外部变量,就是全局block。如果访问了外部变量,那么在访问外部变量之前存储在栈区,访问外部变量之后存储在堆区。

__block的作用:将外部变量的传递形式由值传递变为指针传递,从而可以获取并且修改外部变量的值。同样,外部变量的修改,也会影响block函数的输出。

block循环引用问题:当一个类的对象持有block,block里面又引用了这个对象,那么就是一个循环引用的关系。可以用strong-weak-dance的方法解除循环引用。

上一篇 下一篇

猜你喜欢

热点阅读