Fra*_*gel 7 memory ios8 ios8-extension
我在我现有的照片编辑应用程序中添加了一个新的iOS 8 Photo Extension.我的应用程序有一个非常复杂的过滤器管道,需要一次在内存中保留多个纹理.但是,在具有1 GB RAM的设备上,我可以轻松处理8 MP图像.
但是,在扩展中,存在更高的内存限制.我不得不将图像缩小到2 MP以下,以便在不破坏扩展名的情况下对其进行处理.我还认为只有在没有连接到扩展的调试器时才会出现内存问题.有了它,一切正常.
我做了一些实验.我修改了内存预算测试应用程序以在扩展中工作,并得出以下结果(显示崩溃前可以分配的MB的RAM数量):
??????????????????????????????????????????????????????????????
? 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 ?
??????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
一些观察:
现在我的问题是:我应该如何在照片编辑扩展中使用这么少的内存?一个包含8 MP(相机分辨率)RGBA图像的纹理单独吃~31 MB.如果我必须告诉用户只有在使用主应用程序时才能进行全尺寸编辑,这个扩展机制有什么意义呢?
你们其中一个人也达到了这个障碍吗?您是否找到了解决此约束的解决方案?
小智 3
我正在为我的公司开发照片编辑扩展,我们面临着同样的问题。我们的内部图像处理引擎需要超过 150mb 才能对图像应用某些效果。这还不包括全景图像,每个副本大约需要 100MB 的内存。
我们只找到了两种解决方法,但没有找到实际的解决方案。
或者
根据 Apple 的应用程序扩展编程指南,第 55 页,“处理内存限制”一章,扩展中内存压力的解决方案是检查您的图像处理代码。到目前为止,我们正在将我们的图像处理引擎移植到CoreImage,结果远远好于我们之前的引擎。
我希望我能帮上一点忙。马可·派瓦