因此,我以前看过这个问题,实际上我昨晚问了一下,但是我想我会再考虑一下,只是看看我是否可以对这个问题获得其他独特的看法。

问题 - 我有一个应用程序,其中包含大量UIImageViews(将图像下载到磁盘)中,当然,它在它面临的两个大问题:内存使用和性能。在我的应用记忆中,使用并不是一个问题,因为我正在采用诸如脱水和重复使用图像视图之类的技术。但是性能完全是另一回事。现在,作为存储器保存过程,我仅将图像文件存储在内存中,因为将图像存储在内存中是荒谬的。但是问题在于,从磁盘上读取比内存要花费更多的时间,然后放慢滚动滚动的滚动 非常.

那么,你们当中有什么样的技术建议呢?我已经看过320,但不想使用它,因为我在视图中需要高可定制性,而这不会。图像文件不是很大,而只是缩略图大小,因此没有缩放尺寸或过剩尺寸。必须有一种直观的方法来处理此问题。内置的照片应用程序最多可完美地处理数千张照片,记忆力低下,光滑和光滑的滚动性能。

有帮助吗?

解决方案

从根本上讲,问题在于,您可能会在UI线程上进行一堆磁盘I/O,这基本上可以保证会导致性能问题。

您应该考虑将图像加载到背景线程上,并在加载图像时更新主线程上的图像视图。根据您的用例,您可以或多或少地对提前预加载的距离等变得更加聪明,因此您可以准备好图像。 (可能有一些可用的源代码甚至Apple示例代码可以做类似的事情,但我不知道它的头顶。)

您可能会注意到,某些应用程序(不确定照片应用程序)具有中间阶段,它们将加载A 非常 所有图像的小拇指尺寸图像,并将其扩展到渲染尺寸,直到加载完整尺寸的版本为止,如果用户在加载全尺寸之前滚动该图像,则可见效果几乎是与图像一直存在的情况一样。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top