使用[UIImageView startAnimating]方法时,iOS应用程序崩溃

时间:2011-09-01 16:51:34

标签: objective-c ipad memory-management

在我的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来实例化数组,因此我不认为这与释放数组有关。

0 个答案:

没有答案