在实际开发中,不少时候都在 block 中使用 weakSelf。那么何时须要使用 weakSelf,何时又不须要使用呢?动画
答案:当 block 再也不被 self 持有,被其余对象所持有的时候,就不须要使用 weakSelf,举个例子,咱们使用 UIView 的动画的时候,也就是对象
animateWithDuration的时候,就并不须要使用 weakSelf,由于他们的持有关系是,1.UIView 中某个负责动画的对象持有了 self 2.block 持有了 self,而不是 self 持有 block,所以并无产生循环引用的问题。因此不须要使用 weakSelf。内存
当动画结束的时候,UIView 会结束持有这个 block,若是没有其余对象持有 block,block 会被释放,block 也会释放掉对self 的持有,整个内存引用关系被解除。开发