UIImage Анимация, вызывающая приложение для сбоев / утечек памяти
Я использую анимацию UIImage, и она вызывает многочисленные утечки памяти и сбои для разных пользователей, использующих приложение.
Ниже мой код. Я предварительно загружаю набор из двух анимаций в viewDidAppear
pointsView.image = [UIImage imageNamed: @ "C72.png"];
NSMutableArray *menuanimationImages = [[NSMutableArray alloc] initWithCapacity:21];
NSString *imageName;
for( int aniCount = 0; aniCount < 72; aniCount++ )
{
imageName = [NSString stringWithFormat:@"C%d.png", aniCount];
[menuanimationImages addObject:[UIImage imageNamed:imageName]];
}
pointsView.animationImages = menuanimationImages;
pointsView2.image = [UIImage imageNamed:@"I72.png"];
NSMutableArray *menuanimationImagess = [[NSMutableArray alloc] initWithCapacity:21];
NSString *imageNames;
for( int aniCounts = 0; aniCounts < 72; aniCounts++ )
{
imageNames = [NSString stringWithFormat:@"I%d.png", aniCounts];
[menuanimationImagess addObject:[UIImage imageNamed:imageNames]];
}
pointsView2.animationImages = menuanimationImagess;
}
Затем я запускаю анимацию, используя
pointsView.animationDuration = 3.11;
pointsView.animationRepeatCount = 1;
[pointsView startAnimating];
Какие-либо предложения?
2 ответа
Пожалуйста, прочитайте мой пост в блоге на эту тему: видео и использование памяти на устройствах IOS. Корень проблемы в том, что вы просто не можете загрузить столько изображений в основную память одновременно. Вам просто не нужно использовать API UIImageView.animationImages, он сильно сломан и заманивает разработчиков на написание плохого кода, который будет зависать при запуске на устройстве.
Вы загружаете это выглядит как 72 PNG изображения в память одновременно? И, в зависимости от размера этих изображений, вы, возможно, достигаете пределов памяти некоторых старых устройств, заставляя их выдавать предупреждение о памяти и в конечном итоге вылетать. Мое предложение не делать анимацию из 72 изображений. Вы можете попробовать сжать каждое изображение, что снизит их качество и объем памяти, но загрузка 72 изображений для анимации просто не годится.