我有一个通过 HTTP 从远程服务器返回的大型数据集(大约 3500 个对象)。目前,数据正在 NSCollectionView 中呈现。数据的一个方面是到服务器的路径包,用于表示数据的小图像(为简单起见,请考虑缩略图)。
Bindings 非常适合已经返回的数据,并且通过 valueurl 绑定来绑定图像很容易。但是,当滚动浏览数据集时,用户界面非常缓慢——这让我认为这NSCollectionView
是在检索所有图像数据,而不仅仅是用于显示当前可见图像的图像数据。
我的印象是 Cocoa 控件足够聪明,只能检索通过延迟加载实际输出到用户界面的信息的数据。这当然似乎是这种情况NSTableView
- 但我可能会被这个想法误导。
valueurl 绑定应该懒惰地行动,而且,它应该在NSCollectionView
?
我可以创建一个缓存机制(实际上我已经为另一个应用程序准备好了这样的东西 - 如果你有兴趣使用来自异步 NSURLConnection 的数据填充 NSImage ,请参阅我的帖子)但我真的不想走这条路线如果对于这个特定的实现,我不必这样做,因为用户可能会经常更改数据集,并且可能只需要数据的小子集。
有什么建议的方法吗?
谢谢!
更新
经过更多测试后,似乎出现了问题,因为通过数据集的滚动操作会导致从服务器请求每个图像。一旦所有图像都在数据集中传递,响应非常快。
所以问题......有没有办法在滚动时关闭valueurl fetch并在滚动完成后重新打开它?