Как загрузить массив с сотнями экземпляров UIImage без сбоя приложения из-за скачка памяти? - PullRequest
0 голосов
/ 20 октября 2018

У меня есть анимация, которая состоит из 250 кадров.Каждый кадр имеет разрешение 1080x1920 и в формате PNG.Мне нужно взять все эти кадры, анимировать их с помощью CAKeyframeAnimation и визуализировать их на видео, используя AVFoundation инструменты.

Проблема возникает, когда я пытаюсь создать массив values для CAKeyframeAnimation.Инициализация 250 изображений FullHD вызывает довольно большой всплеск памяти, который система обнаруживает и решает убить приложение.Я пытался поиграть с autoreleasepool, но, похоже, это совсем не помогло (неудивительно, потому что CAKeyframeAnimation нужно удерживать эти изображения).

Проблема идет еще дальше: у меня на самом деле 10 таких анимаций!И мне нужно быстро переключаться между ними, потому что приложение позволяет динамически просматривать эти анимации (что делается с помощью AVSynchronizedLayer), прежде чем экспортировать все в видеофайл.

Поэтому мой вопрос: как я могу загрузитьбольшой массив UIImage экземпляров без системной блокировки приложения из-за скачка памяти?Есть ли асинхронный способ их загрузки?

1 Ответ

0 голосов
/ 20 октября 2018

как я могу загрузить большой массив экземпляров UIImage без системной блокировки приложения из-за скачка памяти?

Вы не можете.То, что вы пытаетесь сделать, неправильно с самого начала.

  • Если целью является создание «спрайтовой анимации» с использованием анимации по ключевым кадрам для периодического изменения содержимого слоя, анимация должна состоять из небольшого числа small images.

  • Если цель состоит в том, чтобы сделать видео на основе последовательности изображений, анимация по ключевому кадру не состоит в том, как это сделать в первую очередь.

...