¿Debo eliminar CABasicAnimation cuando finalice la animation?

Estoy animando una capa como para cambiar el color de background:

CALayer *layer = [CALayer layer]; layer.frame = CGRectMake(0, self.view.bounds.size.height, self.view.bounds.size.width, self.view.bounds.size.height); layer.backgroundColor = [UIColor yellowColor].CGColor; [self.view.layer insertSublayer:layer atIndex:0]; [CATransaction begin]; CABasicAnimation *animation = [CABasicAnimation animation]; animation.keyPath = @"position.y"; animation.byValue = @(-self.view.bounds.size.height); animation.duration = 0.4; animation.fillMode = kCAFillModeForwards; animation.removedOnCompletion = NO; self.animating=YES; [CATransaction setCompletionBlock:^{ NSLog(@"finished"); self.view.backgroundColor=[UIColor yellowColor]; [layer removeFromSuperlayer]; self.animating=NO; }]; [layer addAnimation:animation forKey:@"slide"]; [CATransaction commit]; 

Cuando termine, estableceré el color de background real de UIView y luego eliminaré la capa. ¿Debo llamar algo como [self.view.layer removeAllAnimations]; en el bloque de finalización para eliminar la animation también o se elimina automáticamente? Solo pienso en la gestión de la memory.

No hay necesidad de decir

 animation.fillMode = kCAFillModeForwards; animation.removedOnCompletion = NO; 

… si estructuras tu animation y capa correctamente desde el principio. Ese baile completo se basa en una vieja idea errónea de cómo funciona la animation. Por desgracia, a menudo se ve flotando por Internet, pero está mal y siempre estuvo mal. Es mejor aprender a hacer esto correctamente (estableciendo la capa en su valor de propiedad final a medida que comienza la animation).

No creo que debas eliminarlo en absoluto en este caso.

En su controller de finalización, está eliminando la capa de su superestructura y no se aferró a la capa en ningún otro lado. La jerarquía de capas es lo único que retiene su capa, de modo que cuando la elimine de la jerarquía, la capa se desasignará.

Cualquier animation agregada a la capa también debe ser desasignada.