我遇到了UIImage内存管理问题 (iphone) my app gets memory warning when instruments shows "all allocations" only 7mb?
基本上,我多次创建/销毁UIImage 即使我使用本地NSAutoreleasePool将内存消耗降低,iphone / ipad设备也会不断抱怨内存使用情况。
我在想,我应该将UIImage分配给我可以指定的特定内存缓冲区(或缓冲池)。
这可能吗?
或者如何在不惹恼iOS的情况下多次创建/销毁UIImages的任何其他建议将非常感激。
谢谢。
答案 0 :(得分:10)
这不是一个众所周知的事实,但是仪器没有考虑分配内存中UIImages的大小。你可能会泄漏100Mb的UIImages,分配的内存不能说明这个故事。讲述故事的是在给定时刻的实时UIImage实例的数量。
在 Allocations 工具中,使用右上角的搜索框搜索“Image”。然后在UIImage中查找标记为#linving的列。该数字是UIImage对象的数量。这是一个更好的指南针来确定你的UIImages在哪里。如果在某些时候你有比你想象的更多的对象,并且这些UImage不会消失你手中的UIImage泄漏。 UIImage泄漏会快速杀死你的应用程序。
答案 1 :(得分:2)
CGImage的波动不超过我的想象(最大6+).. umm可能6+ = 6mg,基线10mg = 16Mg触发警告
CGImages未自动发布,您应致电CGImageRelease(image);