weakSelf的使用
2017-12-22 本文已影响0人
承诺幸福
使用过weakself的都知道weakself的作用是为了避免循环引用而定义的。
使用weakself需要注意的三点:
1: 谁主动发起的blk
2:谁是blk 具体的响应者
3:1和2 的关系 是不是强引用关系
需要关注的就是 对象方法中的循环引用,如果仅仅是个局部变量 直接self,如果是个全局的成员变量,那就基本上是会有循环的问题
那么有一个问题,是不是所有的block里面都需要去定义一个weakself呢?
图一:
图二:
图一是masonry的适配,里面引用了weakself来适配控件的大小,这里使用weakself基本上是没有问题的?
因为这里的适配是放在主线程中也必然是放在主线程中运行的,并且也不会提前释放,因ui的dealloc 肯定是主线程在跑。
block内部 你是不会因用到其他self 之外空间的布局的,所以这里用weakself绝对不会存在循环引用的情况,所以用不用问题不大。