播放UIImageView动画一次并在播放后立即将其从内存中删除的最佳方法是什么?

时间:2011-10-17 04:33:15

标签: ios uiviewanimation

我很难从内存中删除动画。这样做的最佳方式是什么?

这是我的动画代码:

-(IBAction)animationOneStart { 

NSMutableArray *images = [[NSMutableArray alloc] initWithCapacity:88];

for(int count = 1; count <= 88; count++)
{
NSString *fileName = [NSString stringWithFormat:@"testPic1_%03d.jpg", count];
UIImage  *frame    = [UIImage imageNamed:fileName];
[images addObject:frame];
}

loadingImageView.animationImages = images;

loadingImageView.animationDuration = 5;
loadingImageView.animationRepeatCount = 1; //Repeats indefinitely

[loadingImageView startAnimating];
[images release];

}

谢谢!

3 个答案:

答案 0 :(得分:1)

[images removeAllObjects];
[images release];

答案 1 :(得分:1)

不需要在Xcode 4.2下使用ARC释放它!今天更新:)

答案 2 :(得分:0)

据我所知,没有回调知道imageView的动画何时完成。这很不幸,因为这意味着要在imageView完成动画时删除动画,您需要反复检查imageView的isAnimating方法,直到它返回false。以下是我的意思的一个例子:

您可以在原始代码中执行此类操作,添加以下行

[loadingImageView startAnimating];
[images release];

[self performSelector:@selector(checkIfAnimationIsFinished) withObject:nil afterDelay:4.5f];

然后创建一个方法

-(void)checkIfAnimationIsFinished {
    if (![loadingImageView isAnimating]) {
        [loadingImageView release];
    } else {
        [self performSelector:@selector(checkIfAnimationIsFinished) withObject:nil afterDelay:0.5f];
    }
}

这只是一个例子,我使用值4.5f和0.5f,因为不幸的是,时间不准确,它更像是一个大概的数字。 4.9f和0.1f可能会更好。无论如何,问题在于如果将方法设置为在启动动画后5.0f秒触发,则不能100%确定动画是否已完成。因此,如果没有完成,您需要反复检查。

无论如何,这不是最干净的解决方案,但除非有人知道如何在imageView完成动画制作时获得回调,否则我不知道更好的解决方案。