这种CAAnimation是否会导致泄漏或保留周期?

时间:2013-10-24 05:24:55

标签: iphone objective-c memory-management caanimation retain-cycle

问题:如果包含应用了以下动画的UIView的ViewController被解除分配,是否会导致内存泄漏或保留周期?

换句话说,如果我将此动画应用于uiview,当uiview的父VC被解除或取消分配时,是否会导致内存泄漏或保留周期?

+(CAAnimation*)fadeOfRoomStatusLabel
{
    //Customize animation
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
    animation.FromValue = [NSNumber numberWithFloat:0.2f];
    animation.toValue = [NSNumber numberWithFloat:1.0f];
    animation.autoreverses = YES;
    //animation.BeginTime = CACurrentMediaTime()+.8;
    //animation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseOut];
    animation.removedOnCompletion = NO;
    animation.duration = 1;
    animation.repeatCount = 99;
    return animation; 
}

1 个答案:

答案 0 :(得分:1)

不,它不会,因为它没有任何明确设置的引用回到它所附加的视图。但是, if 稍后将动画的委托设置为对动画具有强引用的对象(直接或间接),您将有一个保留周期,因为动画实例将保留其委托。您必须在某个时刻清除该代表才能将其释放。

测试这些非常容易。只需将调试日志消息添加到视图控制器的-dealloc方法即可。当您关闭视图控制器时,请确保从其-dealloc方法中看到日志消息。如果不这样做,您知道某个视图控制器存在内存问题,您可以开始调试原因。