优化 NSCollectionView 满图的滚动速度和内存占用

Optimise scroll speed and memory usage of NSCollectionView full of images

我正在使用 NSCollectionView(使用自定义 NSCollectionViewLayout 作为其布局)来浏览可能有数千个本地(磁盘上)图像。确保滚动保持流畅和内存使用(从加载图像到查看)不会达到顶峰的最佳方法是什么?

目前,每个 NSCollectionViewItem 的 representedObject 是一个 class 和一个 NSImage 属性。我尝试将此 属性 设置为可选并在 viewDidAppear 上加载图像文件(并在 viewWillDisappear 上将其设置为 nil)但这完全停止了图像加载(viewDidAppear 在显示父视图之前没有被调用?)。

非常感谢大家的帮助。

图像缓存和图像缩略图是降低内存使用率的主要方式。

图像缓存会将一次内存中的图像数量保持在最大值,这可以通过 NSCache 或各种图像缓存第 3 方框架之一来实现。

图片缩略图是将完整尺寸的图片转换为较小的表示形式,因此当您滚动时不会加载所有数据。您可以在进入全屏表示时加载完整图像。

另一件事是图像未对齐。一般前提是您想将图像绘制到 integer-value 坐标中,浮点值对于 GPU 计算来说更难。 (看这个SO post