Я боролся целую вечность, пытаясь сделать работающее устройство для чтения PDF для iPhone / iPad, но эта штука просто не перестает есть память. Кажется, что все страницы, нарисованные с помощью CGContextDrawPDFPage, кэшируются внутри и никогда не освобождаются.
Я не единственный с этой проблемой: http://lists.apple.com/archives/quartz-dev/2010/Apr/msg00025.html
http://web.archiveorange.com/archive/v/SEb6acvPicMB2NdIjEd3
Один ответ из первой темы:
Если это то, что я думаю, то это не утечка, а кеш. Вместо того чтобы сохранять документ PDF между вызовами, попробуйте создать документ, получить и нарисовать страницу, а затем выпустить документ после завершения.
Я пробовал это, и это решает проблему, но это слишком чертовски медленно. Принимая во внимание, что выполнение этого «обычным» способом (то есть без загрузки / выпуска CGPDFDocument для каждой прорисовки) работает хорошо и достаточно быстро, пока я не доберусь до 4-й или 5-й страницы документа и не произойдет сбой.
Я гуглял эту проблему целую вечность: у всех одна и та же проблема, но, видимо, никто не заставил ее работать. Единственные образцы, которые я нашел, загружают одностраничный PDF, так что, очевидно, все работает нормально, пока вы не загрузите документ с несколькими страницами (и, конечно, если в нем есть изображения, он падает еще раньше). Это сводит меня с ума.
Итак, вопрос в том, как именно вы обрабатываете рисование PDF с помощью CGPDF в своем приложении? Любая помощь будет принята с благодарностью. Спасибо.