gpt4 book ai didi

objective-c - 延迟加载 NSTableView

转载 作者:行者123 更新时间:2023-12-03 16:43:23 26 4
gpt4 key购买 nike

在 iOS 上,NSTableView (UITableView) 是延迟加载的,从某种意义上说,表格仅显示当前 View 所需的单元格,而不是更多。当用户向上或向下滚动时,会从数据源加载更多信息。

OSX 有类似的东西吗?我有一个 NSTableView,需要加载 1000 多条记录(+多列),这会导致加载滞后以及向上或向下滚动时出现滞后。

这种“延迟”加载是一个好的解决方案吗(如果可能的话)?或者也许有类似的东西?

谢谢。

附注关于加载过程——我使用两种常用的方法

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

-(NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView

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

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

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

你觉得怎么样?谢谢!

最佳答案

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

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

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

关于objective-c - 延迟加载 NSTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10279161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com