Приложение iOS падает при использовании метода [UIImageView startAnimating] - PullRequest
2 голосов
/ 01 сентября 2011

в моем 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]; и анимировать другую группу изображений.Я могу сделать это несколько раз, но в конечном итоге приложение вылетает!Чтобы это исправить, я сделал следующее: у меня есть глобальная переменная BOOL под названием isAnimating, и это означает, что каждый раз, когда появляется анимация, вы не сможете анимировать другую группу изображений, пока анимация не будет завершена.,Раньше у меня был метод:

-(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 для создания экземпляра массива, поэтому я не думаю, что это связано с освобождениеммассив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...