我很难从内存中删除动画。这样做的最佳方式是什么?
这是我的动画代码:
-(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];
}
谢谢!
答案 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完成动画制作时获得回调,否则我不知道更好的解决方案。