ara*_*_86 21 ios objective-c-blocks automatic-ref-counting retain-cycle
我们是否需要在UIAnimation块中使用__weak self,如下所示?如果我们不指定自我弱,是否会产生保留周期问题?
[UIView animateWithDuration:animationDuration
delay:0
options:UIViewAnimationCurveEaseInOut
animations:^{
[self doSomething];
} completion:^(BOOL finished) {
if (finished) {
[self doSomething];
}
}];
Run Code Online (Sandbox Code Playgroud)
我也对以下场景感到困惑.有什么想法吗?请分享您的意见.
[self.navController dismissViewControllerAnimated:animated
completion:^{
[self doSomething];
}];
Run Code Online (Sandbox Code Playgroud)
我们应该在这里使用弱者吗?
Sul*_*han 49
这不是保留周期.保留周期将是
self -> block -> self
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们有
animation framework -> block
block -> self
Run Code Online (Sandbox Code Playgroud)
第一个保留只是临时的 - 当动画结束时块被释放.即使发生保留周期,它也只是暂时的,并且不会阻止对象的重新分配.
您需要在可以__weak保留循环时使用。这是不是这种情况下,因为动画块不是由自我保持。
另一种使用的情况__weak是一个延长的动作,它会在完成后调用我们的块,并且self可以在这个动作期间被释放。例如,某些网络请求将在完成块中为我们的视图控制器调用接口更新。用户可以在请求期间退出我们的屏幕。在这种情况下不需要self用块来保留,最好使用弱自我。但是使用动画块也不是这种情况。
| 归档时间: |
|
| 查看次数: |
10205 次 |
| 最近记录: |