我正在提供NSOutlineViewDataSource
。该表的数据取自数据库。正在进行少量处理,但不多。
我正在计算outlineView: objectValueForTableColumn: byItem:
调用的值,而不是存储在我从outlineView: child: ofItem:
返回的对象中,因为数据可能会经常更改。
从最初的调查来看,NSOutlineView
没有做太多冗余的回调(即要求同一行两次)。我理解表模型是如何工作的,我希望它在数据集达到一定大小时能够做到这一点。
我是否应该期待大量的冗余调用(在这种情况下我应该尝试缓存数据)还是自己进行合理数量的缓存?它是否每次都调用 一个单元格离开然后返回?
是否缓存或重新计算的决定是我期望为给定单元格调用objectValueForTableColumn
的频率之间的平衡。在哪条路上有共识?或者是给定数据集的试错?
答案 0 :(得分:0)
这是一个很好的问题,与我目前正在编码的区域相匹配。我自己的tableview从sqlite3数据库读取数据,所以我 选择缓存数据(我的行数可以从1到数百万)。
我的缓存对象还包含上次访问时间值,这样当缓存变得太大时我就可以清除缓存。
我面临的最大问题之一是,我需要根据用户的搜索/排序要求SELECT
我的数据NSTableViewDataSource
并不能提供给我提供有关当前可用行的信息。我想我需要将该sucker子类化以添加信息。