Как справиться с ограничениями памяти в iOS 8 Photo Extensions?
Я добавил новое расширение для фотографий iOS 8 в свое существующее приложение для редактирования фотографий. Мое приложение имеет довольно сложный конвейер фильтров и должно хранить несколько текстур в памяти одновременно. Тем не менее, на устройствах с 1 ГБ ОЗУ я легко могу обрабатывать 8 Мп изображения.
В расширении, однако, есть намного более высокие ограничения памяти. Мне пришлось уменьшить изображение до 2 Мп, чтобы обработать его без сбоя расширения. Я также понял, что проблемы с памятью возникают только тогда, когда к расширению не подключен отладчик. С ним все отлично работает.
Я сделал несколько экспериментов. Я модифицировалприложение для тестирования бюджета памяти работать в расширении и получил следующие результаты (показывающие объем ОЗУ в МБ, который может быть выделен до сбоя):
╔═══════════════════════╦═════╦═══════════╦══════════════════╗
║ Device ║ App ║ Extension ║ Ext. (+Debugger) ║
╠═══════════════════════╬═════╬═══════════╬══════════════════╣
║ iPhone 6 Plus (8.0.2) ║ 646 ║ 115 ║ 645 ║
║ iPhone 5 (8.1 beta 2) ║ 647 ║ 97 ║ 646 ║
║ iPhone 4s (8.0.2) ║ 305 ║ 97 ║ 246 ║
╚═══════════════════════╩═════╩═══════════╩══════════════════╝
Несколько замечаний:
С подключенным отладчиком расширение ведет себя как "нормальное" приложениеНесмотря на то, что 4s имеет только половину общего объема памяти (512 МБ) по сравнению с другими устройствами, он получает те же самые ~ 100 МБ от системы для расширения.Теперь мой вопрос: как мне работать с этим небольшим объемом памяти в расширении редактирования фотографий? Одна текстура, содержащая 8 МБ (разрешение камеры) RGBA-изображения, съедает только ~ 31 МБ. Какой смысл в этом механизме расширения, если я должен сказать пользователю, что полноразмерное редактирование возможно только при использовании основного приложения?
Один из вас тоже достиг этого барьера? Вы нашли решение, чтобы обойти это ограничение?