我有一个应用程序,在一个数组中包含 12 个图像。所有这些图像同时显示在屏幕上。 (1 个 View - 12 个更宽更高的图像(UIImageView
)一个放在另一个上。当用户做某事时,应用程序移动图像,因此 View 显示不同的场景)
图片本身并不太重(大小约为 2500x5000
,但包含图片的整个文件夹约为 3.5 MB)。
加载后,应用程序消耗 355 MB。
当我在 viewDidLoad 中放置断点时(此时所有图像都已加载),xcode 显示该应用仅消耗 9 MB,但在 viewDidAppear
中为 355 MB。
这是什么原因呢?我怎样才能紧凑地存储图像? (因为我认为问题出在图像中)。
感谢您的帮助!
最佳答案
打开的图像将占据如下内容:H x W x channel 数 x channel 位数
,文件大小是另一回事,因为图像是根据其类型进行压缩的。您的图像在内存中每张为 50Mb。
唯一的方法是在显示它们之前调整图像的大小。网上有很多图像调整类别,只需谷歌一下。
另一个建议是不要将所有图像一起加载,只需将文件路径引入数组,然后懒惰地实例化图像。
如果您需要使用 hires 图像,您应该寻找 CATiledLayer
和平铺技术。
关于ios - 应用程序中的高内存使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23153624/