Firebaseasynchronousfunction,后台队列中有什么,什么不是

可以说我有这个

// a bunch of code... FIRDatabase.database.reference.child("somechild").observeSingleEventOfType(.Value, withBlock{(snapshot) in //some code inside of the completion handler}) 

请不要太多地阅读代码片段,要求更多的代码,我只需要一个简短的答案。 它说,“一堆代码”,假设它实际上是在主队列上的一些代码。 现在,当我写下observeSingleEvent Firebase完成处理程序时,我的分析就是这样。

  1. observeSingleEvent获取后台队列上的快照,以阻止主队列上的UI。

  2. 一旦获取快照,“in”之后的代码块现在回到MAIN队列,所以可以把任何与UI相关的代码放在那里。

我的整个应用程序是基于这个推理,所以如果我不正确,请告诉我实际上发生了什么。

这确实是Firebase数据库客户端的工作方式:所有networking和磁盘I / O发生在主线程之后,然后在主线程上调用您的callback/块。