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?