Ale*_*one 6 memory-management objective-c calayer ipad ios6
我有记忆的问题与我的应用程序之一,我已经确定为仪器定义的"真实记忆">活动监视器作为一个可能的罪魁祸首.
我的应用程序在UIScrollViews中分配大型UIImages.有一个CIImageFilter应用于其中一个图像.活动监视器显示,在第一次按下包含带有大图像的滚动视图的视图控制器时,实际内存使用量将跳至300mb左右.随后的推/弹将其提升到约500mb:
我读到"Live Bytes"不计算纹理和CALayers使用的内存,所以我的问题是:如何正确释放CALayers使用的图像/滚动浏览器的内存?
查看右侧的实际内存使用情况蓝色饼图:

实际和虚拟内存都是此过程中最高的:

困扰我的是我在弹出控制器时试图清理我的大型滚动视图和图像,"实时字节"的数字下降到大约5mb,而"真实内存"保持高得惊人(~500 mb) :
ContainerScrollView* container = ...;
[container.view removeFromSuperview];
container.view = nil;
Run Code Online (Sandbox Code Playgroud)
这是分配分析:

我在这里发现有人遇到类似的问题:
答案(我真的希望如此)似乎开始使用NSData dataWithContentsOfFile: ,然后创建一个UIImage imageWithData:. 有用户选择的图像吗?将其写入临时文件并读回。我不信任任何其他图像方法,因为在我 12 小时的测试中,它们在 iOS 6.1.2 中对于大图像视图的表现似乎不合理。