iOS - 优化。缓存图像

Posted

技术标签:

【中文标题】iOS - 优化。缓存图像【英文标题】:iOS - Optimizing. Cache images 【发布时间】:2014-01-17 15:45:59 【问题描述】:

我正在尝试优化包含大量图像和代码的 ios 应用程序。我已经使用一些程序减小了图像的大小,但使用仪器显示该应用程序仍在占用 70-90mb 的高速缓存内存。 我已经读过按需加载资源(图像)并在不再需要时丢弃它们是一个很好的解决方案。我该怎么做? 我还有一个问题: 当我们使用: UIImage *aux = [UIImage imagenamed:@"image.png"]; 在我们写完 aux=nil; 图片从缓存中被丢弃?

【问题讨论】:

您可能想要描述您的应用的功能、它如何使用图像、任何时候可见的图像数量、您当前的加载方式... 【参考方案1】:

一次只能看到其中一些图像吗?编写一个系统,只加载那些当前可见的图像(也许你的应用程序认为可能很快就会变得可见)。当您从系统收到内存警告时,请查找您过去加载的一些图像,这些图像有一段时间不可见并释放它们。

要回答您的第二个问题,是的,如果您使用 ARC(自动引用计数),并且如果您设置为 nil 的引用是对该对象的唯一引用,则设置对 nil 的引用将释放它。对一个对象的所有引用必须在它被释放之前消失。

我会查看一些可用的解决方案,例如 Path 的 FastImageCache,看看它们是否满足您的需求。 FastImageCache 以类似于 Sprite Sheets(用于 2D 游戏)的格式将未压缩的图像存储在磁盘上,因此可以在需要时快速加载它们。这里的重点是提高滚动性能,所以如果这对您来说不是问题,那么这可能不是适合这项工作的工具。

你也可以看看this thread,虽然它的目的是缓存网络图像。

你也可以看看The Tumblr Image Cache

【讨论】:

以上是关于iOS - 优化。缓存图像的主要内容,如果未能解决你的问题,请参考以下文章

MySQL缓存参数优化(转)

SQL性能优化前期准备-清除缓存开启IO统计

IOS 上的图像缓存

在 PhoneGap IOS 上缓存图像的最佳方法

IOS 中 AFNetworking 缓存图像中的内存泄漏

iOS - 使用 AFNetworking 获取图像保持缓存