gpt4 book ai didi

objective-c - 异步更新 NSTableView 数据源

转载 作者:行者123 更新时间:2023-12-03 17:02:47 25 4
gpt4 key购买 nike

我一直在谷歌上搜索这个主题,但似乎无法就此类问题的解决方案达成共识。当我将数据源与 NSTableView 一起使用时,如果我需要在后台填充数据源,我的脑海中会出现几个有关线程的问题。我希望在这里得到一些指导。

  1. 如果我修改主线程调用 [NSTableView numberOfRowsInTableView:] 和 [NStableView tableView:objectValueForTableColumn:row:] 之间的数据源,会发生什么?如果 TableView 请求的对象不再有效,我该怎么办?

  2. 仅在主线程上更改数据源是否可以解决这种情况?

  3. 如果答案是 2,它是否适用于使用绑定(bind)的情况?

最佳答案

如果您的数据源需要一些时间来填充,并且您当前显示的是包含较旧数据的表格,我认为您有几个选择:

  • 在重新填充发生时在 UI 上显示旋转图标,然后调用 [tableView reloadData]
  • 保留旧数据,以便 tableView 保持响应,然后在获取/计算新数据后,告诉数据源有关新 NSArray(或保存新数据的任何对象)的信息,并调用 [tableView reloadData]。

您无法动态更改支持数据源的数据,除非您随时通知 tableView 每个项目/行的更改。

为了解决线程部分,您可以使用后台线程填充新数据的 NSArray,一旦完成切换到主线程,然后调用 [dataSource setBackingArray:newStuff]; [tableView重新加载数据];

关于objective-c - 异步更新 NSTableView 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24938725/

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