在我的nib文件中我有一个UIImageView,我已经链接到我的变量IBOutlet UIImageView* imgH6;
我需要播放几个动画因此我决定在imgH6上播放它们。例如,如果我想开始动画一组图像,我会做:[self playAnimation1];
-(void) playAnimation1{
NSArray *imagesArrayDilema;
imagesArrayDilema = [NSArray arrayWithObjects:
[UIImage imageNamed:@"dilema1-02.png"],
[UIImage imageNamed:@"dilema1-03.png"],
[UIImage imageNamed:@"dilema1-04.png"],
[UIImage imageNamed:@"dilema1-05.png"]
// .....
// there are several images
, nil];
imgH6.animationImages = imagesArrayDilema;
// I will then start the animation as:
wait = ((double)[imgH6.animationImages count])/30;
[imgH6 setAnimationRepeatCount:1];
imgH6.animationDuration = wait;
[imgH6 startAnimating];
}
-(void) playAnimation2{
NSArray *imagesArrayDilema;
imagesArrayDilema = [NSArray arrayWithObjects:
[UIImage imageNamed:@"differentImage-01.png"],
[UIImage imageNamed:@"differentImage-02.png"],
[UIImage imageNamed:@"differentImage-03.png"],
[UIImage imageNamed:@"differentImage-04.png"],
// .....
// there are several images
, nil];
imgH6.animationImages = imagesArrayDilema;
// I will then start the animation as:
wait = ((double)[imgH6.animationImages count])/30;
[imgH6 setAnimationRepeatCount:1];
imgH6.animationDuration = wait;
[imgH6 startAnimating];
}
///.....
// ...
-(void) playAnimation8{ // etc...
所以当我致电[self playAnimation1];
时没有问题。动画动画很好。我也可以打电话给[self playAnimation7];
并将一组不同的图像设为动画。我能够多次这样做,但最终应用程序崩溃了!为了解决这个问题,我已经完成了以下操作:我有一个名为isAnimating的全局BOOL变量,它的作用是,每当有动画到位时,在动画完成之前,你将无法为不同的图像组制作动画。在我以前使用该方法之前:
-(void) animateMain :(NSArray*) imagesArray{
imgH6.animationImages = imagesArray;
// I will then start the animation as:
double wait = ((double)[imgH6.animationImages count])/30;
[imgH6 setAnimationRepeatCount:1];
imgH6.animationDuration = wait;
[imgH6 startAnimating];
}
并且应用程序在播放几次后仍然崩溃。我注意到它在多次更改动画时崩溃了。换句话说,如果我总是展开相同的动画,它不会崩溃......
我也没有使用单词alloc或init来实例化数组,因此我不认为这与释放数组有关。