此 CAAnimation 会导致泄漏或保留周期吗?
Posted
技术标签:
【中文标题】此 CAAnimation 会导致泄漏或保留周期吗?【英文标题】:Will This CAAnimation Cause a Leak or Retain Cycle? 【发布时间】:2013-10-24 05:24:54 【问题描述】:问题:如果包含应用了以下动画的 UIView 的 ViewController 被释放,是否会导致内存泄漏或保留循环?
也就是说,如果我把这个动画应用到一个uiview上,当uiview的父VC被dismiss或者deallocate时,会不会导致内存泄露或者retain循环?
+(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】:不,它不会,因为它没有任何明确设置的引用返回到它所附加的视图。但是,如果您稍后将动画的委托设置为对动画有强引用(直接或间接)的对象,您将有一个保留周期,因为动画实例将保留其委托。您必须在某个时候清除委托才能释放它。
测试这些非常容易。只需将调试日志消息添加到视图控制器的 -dealloc
方法即可。当您关闭视图控制器时,请确保您看到来自其 -dealloc
方法的日志消息。如果不这样做,您就知道该视图控制器在某个地方存在内存问题,您可以开始调试原因。
【讨论】:
以上是关于此 CAAnimation 会导致泄漏或保留周期吗?的主要内容,如果未能解决你的问题,请参考以下文章