目标C:应用程序获取内存警告级别2并在不久之后退出

我的应用程序从服务器抓取照片图像并将它们存储在一个数组中,该数组最终将显示在UITableView控制器中。

我在一个单元格中显示2个图像(768×768像素和100×100像素)。

在启动时,该应用程序将加载10个带有图像的单元格,用户可以选择使用“加载更多”按钮加载下10张照片。 通常在15-20’加载更多’点击之后,我将收到内存警告级别= 2的消息,我的应用程序将终止。

这是因为显示的图像太多了吗? 我该如何解决这个问题?

看看我最近的SO问题/答案。 我认为这可能会有很大帮助。 我使用了一个名为PNGCrush的批处理文件来粉碎/压缩我的PNG文件而不会降低质量。 我的应用程序的内存占用量从大约60 Mb到大约30 MB。 正如Jhaliya所说,24 MB的图像可能是导致内存警告的原因(这就是我的应用程序中发生的情况)。

我的StackOverflow.com发布

它是由于你从网上下载的图像大小在你的UITableView单元中显示而发生的。

有一种且只有一种崩溃解决方案可以尽可能减小图像的大小

@damian:根据你的计算:

1图像= 2.4 mb然后10张图像= 24 mb:我认为,在你的应用程序中有10个这样的图像之后,下一个大小为2.4 mb的图像足以触发2级的内存警告。

从您的描述中很难分辨出屏幕上一次显示的内容。 如果您只是一次显示一对图像,那么您可以将其余图像缓存在磁盘上,而不是将它们保留在内存中。 如果您正在显示缩略图,则可以再次将完整大小的图像缓存在磁盘上,但您应该能够将所有小缩略图保留在内存中。