延迟显示异步获取的项目

时间:2014-08-14 22:28:43

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

我正在使用来自不同来源的块异步使用块,例如......

  • EKEvents 提醒
  • 使用NSURLSession远程 JSON Feed
  • ...我还以经典的同步方式获取EKEvents 日历事件

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

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

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

这可能与主队列上没有发生的异步提取有关吗? 无论如何要改变这种异步行为,所有结果都会立即显示为生成的视图吗?

1 个答案:

答案 0 :(得分:1)

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

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