让我说我有这个
// a bunch of code...
FIRDatabase.database.reference.child("somechild").observeSingleEventOfType(.Value, withBlock{(snapshot) in
//some code inside of the completion handler})
请不要过多地阅读代码片段,要求提供更多代码,我只需要简短的回答。在它所说的地方,"一堆代码",假设它实际上是MAIN队列中的一些代码。现在,当我写下observeSingleEvent Firebase完成处理程序时,我对它的分析是这样的。
observeSingleEvent在后台队列上获取快照,以便不阻止主队列上的UI。
获取快照后,""之后的代码块现在回到MAIN队列,因此可以将任何与UI相关的代码放在那里。
我的整个应用都是基于这种推理,所以如果我不正确,请告诉我实际发生了什么。
答案 0 :(得分:9)
这确实是Firebase数据库客户端的工作原理:所有网络和磁盘I / O都发生关闭主线程,然后您的回调/块被调用 on 主线程