Do we need to use __weak self inside UIAnimation Blocks as given below? Whether it will create retain cycle issue if we are not specifying self as weak?
[UIView animateWithDuration:animationDuration
delay:0
options:UIViewAnimationCurveEaseInOut
animations:^{
[self doSomething];
} completion:^(BOOL finished) {
if (finished) {
[self doSomething];
}
}];
I am also confused in the following scenario. Any thoughts on this? please share your comments.
[self.navController dismissViewControllerAnimated:animated
completion:^{
[self doSomething];
}];
Should we use weak self here?
This is not a retain cycle. A retain cycle would be
self -> block -> self
In this case we have
animation framework -> block
block -> self
where the first retain is only temporary - the block gets released when the animation ends. Even if a retain cycle happens, it will be only temporary and it won't prevent object deallocation.