优化NSCollectionView的滚动速度和内存使用情况

时间:2015-12-26 15:00:12

标签: swift macos cocoa nscollectionview

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

目前,每个NSCollectionViewItem的representObject都是一个具有NSImage属性的类。我尝试将此属性设置为可选,并将图片文件加载到viewDidAppear上(并在nil上将其设置为viewWillDisappear),但这会停止加载图片(viewDidAppear没有'在显示父视图之前调用?)。

非常感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

另一件事是图像不对齐。一般的前提是你想要将图像绘制成整数值坐标,浮点值对于GPU计算来说更难。 (见SO post