Эта проблема является одной из самых известных проблем рендеринга PDF. Решение состоит в том, чтобы кэшировать ограниченное количество страниц PDF. Вы не можете кэшировать все страницы, когда у вас есть большие PDF-файлы из-за нехватки памяти устройств IOS.
Например, Goodreader (одно из лучших iOS PDF Reader приложений) также использует механизм кэширования. Goodreader кэширует 3 страницы, когда вы переворачиваете страницу; однако у них есть проблемы, когда вы переворачиваете страницы быстрее. Так как загрузка новых страниц требует больше времени.
Сначала вы начинаете с решения Goodreader, такого как кеширование с предыдущей, текущей и следующей страниц. Когда пользователь переворачивает страницу, вы должны кэшировать предыдущую или следующую страницу.
Если я приведу пример;
Начальная точка (загрузка двух страниц в память с фоновым потоком из-за проблем с производительностью):
prev = nil;
current = page1;
next = page2;
Когда пользователь переходит на следующую страницу;
prev = page1;
current = page2;
next = page3 //(Load into the cache);
С помощью этой логики решения у вас есть возможность загрузить более 3 страниц в вашу память