Como lidar com restrições de memória no iOS 8 Photo Extensions?

Adicionei uma nova extensão de foto do iOS 8 ao meu aplicativo de edição de fotos existente. Meu aplicativo tem um pipeline de filtro bastante complexo e precisa manter várias texturas na memória por vez. No entanto, em dispositivos com 1 GB de RAM, sou capaz de processar facilmente imagens de 8 MP.

Na extensão, no entanto, existem restrições de memória muito maiores. Eu tive que reduzir a imagem para menos de 2 MP para processá-la sem travar a extensão. Eu também percebi que os problemas de memória só ocorriam quando não havia um depurador conectado à extensão. Com isso, tudo funciona bem.

Eu fiz alguns experimentos. Eu modifiquei umaplicativo de teste de orçamento de memória para trabalhar em uma extensão e apresentou os seguintes resultados (mostrando a quantidade de RAM em MB que pode ser alocada antes da falha):

╔═══════════════════════╦═════╦═══════════╦══════════════════╗
║        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 ║
╚═══════════════════════╩═════╩═══════════╩══════════════════╝

Algumas observações:

Com o depurador conectado, a extensão se comporta como o aplicativo "normal"Embora o 4s tenha apenas metade da quantidade total de memória (512 MB) em comparação com os outros dispositivos, obtém os mesmos ~ 100 MB do sistema para a extensão.

Agora, minha pergunta: como devo trabalhar com essa pequena quantidade de memória em uma extensão de edição de fotos? Uma textura contendo uma imagem RGBA de 8 MP (resolução da câmera) consome ~ 31 MB apenas. Qual é o sentido desse mecanismo de extensão se eu precisar informar ao usuário que a edição em tamanho real só é possível ao usar o aplicativo principal?

Um de vocês também alcançou essa barreira? Você encontrou uma solução para contornar essa restrição?

questionAnswers(3)

yourAnswerToTheQuestion