3

我有一个加载到 UIImageView 中的大图像。该图像是PNG,它的@2x 文件大小是:384K。图像为 5119x2413 像素。用户可以使用捏合手势缩放图像。图像如此之大的原因是,当 UIImageView 通过捏合进行转换时,质量将保持不变。

我遇到的问题是,在某些设备上,尤其是最新的 iPod Touch,它会在尝试显示此屏幕时崩溃。

我已经通过 Instruments 运行了该应用程序,并使用 Leak/Allocations 配置文件对其进行了分析。使用该应用程序时,该应用程序的实时字节通常徘徊在 4MB 左右,但一旦您查看包含 UIImageView 的屏幕,它就会高达 40MB!一旦图像出现在屏幕上,内存就会恢复到 4MB 左右。

我遇到的问题是,在较旧的设备和受内存限制的设备(如 iPod Touch)上,我的应用程序与 SpringBoard 等一些系统服务一起被系统终止。

我尝试使用[UIImage imageWithContentsOfFile:]而不是[UIImage imageNamed:]加载图像,因为我知道[UIImage imageNamed:]缓存图像,但这没有效果。

似乎第一次尝试显示图像时导致的实时内存峰值导致内存不足,并且应用程序正在被操作系统终止。

我很好奇如何解决这个问题,以及 Apple 如何处理在照片应用程序中加载大图像。

只是为了记录,我将 ARC 和 iOS 5.1.1 与 XCode 4.4.1 一起使用。

在此处输入图像描述

4

0 回答 0