我正在使用NSCollectionView(使用自定义NSCollectionViewLayout作为其布局)来浏览可能数千个本地(磁盘上)图像。什么是确保滚动保持平稳和内存使用(从加载图像到查看)的最佳方法是不是通过屋顶?
目前,每个NSCollectionViewItem的representObject都是一个具有NSImage属性的类。我尝试将此属性设置为可选,并将图片文件加载到viewDidAppear
上(并在nil
上将其设置为viewWillDisappear
),但这会停止加载图片(viewDidAppear
没有'在显示父视图之前调用?)。
非常感谢。
答案 0 :(得分:1)
图像缓存和图像缩略图是降低内存使用率的主要方式。
图像缓存会将内存中的图像数量保持在最大值,这可以通过NSCache或其中一种图像缓存第三方框架来实现。
图像缩略图是将全尺寸图像转换为较小的图像,因此当您滚动时,您将无法加载所有数据。进入全屏表示时,您可以加载完整图像。
另一件事是图像不对齐。一般的前提是你想要将图像绘制成整数值坐标,浮点值对于GPU计算来说更难。 (见SO post)