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 的持有,整個內存引用關係被解除。開發

相關文章
相關標籤/搜索