1

我提供一个NSOutlineViewDataSource. 表的数据是从数据库中取出的。正在进行少量处理,但不多。

我正在计算outlineView: objectValueForTableColumn: byItem:调用的值,而不是存储在我返回的对象中,outlineView: child: ofItem:因为数据可能经常更改。

从最初的调查来看,NSOutlineView并没有做太多多余的回调(即两次要求同一行)。我了解表模型的工作原理,并且我确实希望当数据集达到一定大小时它会做一些这样的事情。

我应该期待大量的冗余调用(在这种情况下我应该尝试缓存数据)还是它本身会进行合理数量的缓存?每次一个单元格离开屏幕然后返回时它都会调用吗?

是否缓存或重新计算的决定是在我希望objectValueForTableColumn为给定单元调用的频率之间取得平衡。对于走哪条路是否有共识?或者是给定数据集的反复试验?

4

1 回答 1

0

这是一个很好的问题,与我目前正在编码的领域相匹配。我自己的 tableview 从 sqlite3 数据库读取数据,所以我选择缓存数据(我的行数可以从 1 到几百万不等)。

我的缓存对象还包含上次访问的时间值,这样当缓存变得太大时,我可以清理缓存。

我面临的最大问题之一是我需要SELECT根据用户的搜索/排序要求来处理我的数据,NSTableViewDataSource并且没有向我提供有关当前可用行的信息。我想我需要子类化那个傻瓜来添加信息。

于 2012-12-04T10:00:42.017 回答