Objective c 延迟加载NSTableView

Objective c 延迟加载NSTableView,objective-c,cocoa,nstableview,Objective C,Cocoa,Nstableview,在iOS上,NSTableView(UITableView)是延迟加载的,这意味着该表只显示当前视图所需的单元格,而不显示更多单元格。当用户向上或向下滚动时,将从数据源加载更多信息 OSX有类似的功能吗?我有一个NSTableView,要加载1000多条记录(+多列),这会导致加载滞后以及上下滚动时的滞后 这种“惰性”加载是否是一个好的解决方案(如果可能)?或者类似的东西 谢谢 关于装载过程,我使用两种常用方法 -(id)tableView:(NSTableView *)aTableView o

在iOS上,NSTableView(UITableView)是延迟加载的,这意味着该表只显示当前视图所需的单元格,而不显示更多单元格。当用户向上或向下滚动时,将从数据源加载更多信息

OSX有类似的功能吗?我有一个NSTableView,要加载1000多条记录(+多列),这会导致加载滞后以及上下滚动时的滞后

这种“惰性”加载是否是一个好的解决方案(如果可能)?或者类似的东西

谢谢

关于装载过程,我使用两种常用方法

-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

加载数据。其中有if语句来检查一些变量,因为我有两个包含数据的组合框,当包含“ALL”和“ALL”时,会加载这1000多条记录。如果组合框不是“全部”和“全部”,则只加载两条记录,加载效果良好

考虑到您已经解释过延迟加载是自动完成的,我认为问题在于我正在从XML文件加载数据,因此解析可能会占用大量的处理时间

我考虑在运行时将XML文件中的数据加载到NSDictionary中,并将其保存在内存中,以便在需要时使用,这样可以避免在实际需要显示信息时加载时间


你觉得怎么样?谢谢

您肯定希望将XML文件缓存到某种数据结构中。
tableView:objectValueForTableColumn:row:
方法将为每个可见单元格调用一次。如果有很多列,很容易看到200个单元格。向下翻页,这些单元格都会发生变化,XML文件加载200次,然后会出现延迟滚动

即使只为特定列中的每个单元格加载和解析XML文件,也会很慢,应该加以修复


您可以通过使
tableView:objectValueForTableColumn:row:
返回
nil
来验证缓存是否必要,否则它将解析XML文件。一旦您进行了此更改,它是否会平滑滚动,或者您是否有其他问题?这显然会使应用程序无法使用,但在实现它之前,您应该始终检查优化是否必要和充分。

NSTableView
内容确实是延迟加载的。您是通过数据源还是通过绑定提供数据?如果通过数据源,请发布
objectValueForTableColumn:row:
的实现。如果是通过绑定,请查看访问器,看看是否有任何访问器的处理比返回现有ivar更复杂。@Dondragmer完全正确。
NSTableView
不会延迟加载的唯一原因是您做错了什么。我们需要有关如何填充表视图的更多信息。谢谢大家!我已经添加了一个带有更多信息的P.S.。你能详细介绍一下“使细胞返回零”吗?我已经改写了我的答案。有关滚动的问题只有在进行此更改后才有意义。
-(NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView