我应该在NSTableViewDataSource / NSOutlineViewDataSource中缓存值

时间:2012-08-27 13:01:16

标签: cocoa

我正在提供NSOutlineViewDataSource。该表的数据取自数据库。正在进行少量处理,但不多。

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

从最初的调查来看,NSOutlineView没有做太多冗余的回调(即要求同一行两次)。我理解表模型是如何工作的,我希望它在数据集达到一定大小时能够做到这一点。

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

是否缓存或重新计算的决定是我期望为给定单元格调用objectValueForTableColumn的频率之间的平衡。在哪条路上有共识?或者是给定数据集的试错?

1 个答案:

答案 0 :(得分:0)

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

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

我面临的最大问题之一是,我需要根据用户的搜索/排序要求SELECT我的数据NSTableViewDataSource并不能提供给我提供有关当前可用行的信息。我想我需要将该sucker子类化以添加信息。