It is not needed to use weak/unowned in Animations, GCD or completion handler because :
The external object reference captured by them will only be kept for
fixed time, which means it's definitive that it's going to be executed at one point of time. After this, it will be released so there is no chance of reference cycle which leads to memory leak.
As previous answers suggests,
If animations and completion are not retained by self, then who retains them ?
I didn't find any documentary evidence of this but what I believe is that they are retained by self itself but for a fixed amount of time. After this, the completion executes and release the self, which result the de-allocation of self.
In the retain cycle scenario, the closure is retained by self and self by closures for indefinite time, which is considered as reference cycle and memory leak.