Ios 延迟显示异步获取的项

Ios 延迟显示异步获取的项,ios,asynchronous,uiview,swift,grand-central-dispatch,Ios,Asynchronous,Uiview,Swift,Grand Central Dispatch,我使用块从不同的源异步获取项目,例如 EKEvents提醒 使用NSURLSession的远程JSON提要 …我还以经典的同步方式获取EKEvents日历事件 在每个源的数据获取完成后,我发布了一个通知,并立即添加相应的项作为子视图 问题是:项目/视图仅在延迟几秒钟后才会显示,有时甚至更长(在获得实际结果响应后很长时间)。对于同步获取的项目(如日历事件),情况并非如此–它们会立即显示 (奇怪的是,使用新的Xcode6 live view调试器,我可以在那里看到新的项目视图,但在实际的模拟器或

我使用块从不同的源异步获取项目,例如

  • EKEvents提醒
  • 使用NSURLSession的远程JSON提要
  • …我还以经典的同步方式获取EKEvents日历事件
在每个源的数据获取完成后,我发布了一个通知,并立即添加相应的项作为子视图

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

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

这可能与主队列上没有发生异步回迁有关吗?
是否要更改此异步行为,使所有结果立即显示为生成的视图?

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


当您发布来自后台线程的通知时,将在后台线程上调用处理程序。因此,如果您尝试对后台线程发送的通知进行UI更新,而不将UI更新发送回主队列,您将看到您描述的行为。

添加子视图的位置请使用main thread.perfect尝试一次。是的,这就是问题所在!我没有将通知发回主队列。:)