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 изображений для анимации просто не годится.

Другие вопросы по тегам