NSCache 拥有数百张图像



我得到了一个集合视图,一次显示 9 张图像 (200x300px)。不过,总数可以达到数百。

目前,我检查单元格项目是否在缓存中。如果没有,我将从文件系统加载它并将其放入缓存中。

问题:我第一次滚动浏览集合时,它会丢帧,因为它仍在从文件系统加载图像。经过一次初始滚动后,它很光滑。(那是在5秒)

我想知道将所有(或前 x 个)图像预加载到缓存中是否是一种好习惯?

我认为5s没有大问题,但我担心它会压碎旧硬件。

有什么想法吗?

尝试在后台执行磁盘加载机制。您可以设置一个队列,其中 NSOperationQueue 充满了加载操作。

将 NSCache 与预加载机制一起使用没有多大意义,因为即使您预加载所有图像,系统也可以并且会在认为合适的情况下逐出缓存。在这种情况下,您对预加载所做的工作无济于事。

你看过SDWebImage吗?它已经包含an asynchronous memory + disk image caching with automatic cache expiration handling

而且,我通常会预加载所有图像以避免闪烁

最新更新