ios - 应用程序中的高内存使用率

标签 ios iphone objective-c memory uiimageview

我有一个应用程序,在一个数组中包含 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/

相关文章:

iphone - 如何在 iPhone 中本地打开 .doc 文件?

ios - 为什么旋转只发生一次?

ios - CocoaPods 不链接库

jquery - 是否有更好的方法在 iPhone 的 Safari 中滚动页面(使用 jQuery)(scrollTop 无法正常工作)

c++ - OpenCV 导致 EXC_BAD_ACCESS 线程 1 : code=2 crashes in UIApplicationMain

ios - 获取 native 应用程序 objective-c 中当前播放的非音乐应用程序轨道的信息

objective-c - 我该如何做NSPredicate代码?

ios - 什么是 UISwitch 的明确变量名称,因为 "switch"是保留关键字?

ios - 如何在 Swift 3 中使用 CGContextDrawImage?

ios - constraintsWithVisualFormat 为所有 View 设置相同的 Y 位置