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 - 优化。缓存图像的主要内容,如果未能解决你的问题,请参考以下文章