【发布时间】:2017-01-03 19:50:49
【问题描述】:
假设我有这个
// a bunch of code...
FIRDatabase.database.reference.child("somechild").observeSingleEventOfType(.Value, withBlock{(snapshot) in
//some code inside of the completion handler})
请不要过多阅读代码 sn-p 要求更多代码,我只需要一个简短的答案。在它说“一堆代码”的地方,假设它实际上是 MAIN 队列上的一些代码。现在,当我写下observeSingleEvent Firebase 完成处理程序时,我对它的分析是这样的。
observeSingleEvent 获取后台队列上的快照,以免阻塞主队列上的 UI。
获取快照后,“in”之后的代码块现在返回到 MAIN 队列,因此可以将任何与 UI 相关的代码放入其中。
我的整个应用程序都是基于这个推理,所以如果我不正确,请告诉我实际发生了什么。
【问题讨论】:
-
这确实是 Firebase 数据库客户端的工作方式:所有网络和磁盘 I/O 都发生在关闭主线程,然后调用您的回调/块开启 主线程。
-
非常感谢您的确认!可以安全地假设 facebook 图形请求以相同的方式工作吗?
标签: ios swift firebase firebase-realtime-database