【问题标题】:Delay displaying async fetched items延迟显示异步获取的项目
【发布时间】:2014-08-14 22:28:43
【问题描述】:

我正在使用块异步从不同来源(例如……)获取项目

  • EKEvents 提醒
  • 使用 NSURLSession 远程 JSON 提要
  • …我也在以经典的同步方式获取 EKEvents 日历事件

每个来源的数据提取完成后,我发布通知并立即将相应的项目添加为子视图。

问题:项目/视图仅在延迟几秒钟后才会显示,有时甚至更长(在获得实际结果响应之后很长时间)。对于日历事件等同步获取的项目,情况并非如此——它们会立即显示。

(奇怪的是使用新的 Xcode6 实时视图调试器,我可以在那里看到新的项目视图,但在实际的模拟器或设备中看不到。)

这可能与主队列上未发生异步获取有关吗? 有没有办法改变这种异步行为,让所有结果立即显示为生成的视图?

【问题讨论】:

  • 添加子视图的地方用主线程试一次。

标签: ios asynchronous uiview swift grand-central-dispatch


【解决方案1】:

当您发布通知时,您是否将其分派到主队列?如果没有,您的处理程序是否将 UI 更新分派到主队列?

当您从后台线程发布通知时,处理程序会在后台线程上调用。因此,如果您尝试执行 UI 更新以响应从后台线程发送的通知,而不将 UI 更新分派回主队列,您将看到您描述的那种行为。

【讨论】:

  • 完美。是的,这就是问题所在!我没有将通知发送回主队列。 :)
猜你喜欢
  • 2019-09-10
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 2019-03-13
  • 2023-03-31
  • 1970-01-01
  • 2018-08-01
  • 2012-04-18
相关资源
最近更新 更多