block 中使用 weakSelf

Posted —__MOMO__—

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了block 中使用 weakSelf相关的知识,希望对你有一定的参考价值。

在实际开发中,很多时候都在 block 中使用 weakSelf。那么什么时候需要使用 weakSelf,什么时候又不需要使用呢?

答案:当 block 不再被 self 持有,被其他对象所持有的时候,就不需要使用 weakSelf,举个例子,我们使用 UIView 的动画的时候,也就是

animateWithDuration的时候,就并不需要使用 weakSelf,因为他们的持有关系是,1.UIView 中某个负责动画的对象持有了 self 2.block 持有了 self,而不是 self 持有 block,因此并没有产生循环引用的问题。所以不需要使用 weakSelf。

当动画结束的时候,UIView 会结束持有这个 block,如果没有其他对象持有 block,block 会被释放,block 也会释放掉对self 的持有,整个内存引用关系被解除。

以上是关于block 中使用 weakSelf的主要内容,如果未能解决你的问题,请参考以下文章

iOS 面试题:什么时候在 block 中不需要使用 weakSelf --转自唐巧

什么时候在block中不需要使用weakSelf

weakSelf 和 strongSelf

weakSelf 运用 strongSelf来解决block的循环引用

block的注意点

剖析RAC中的@weakify@strongify