我听说在从 Firebase 读取数据时,我应该始终在主线程上进行用户界面工作。
我试着做 self.tableView.reloadData
在 Firebase 中的后台线程 observe(.value)
功能和应用程序没有崩溃或卡住。
databaseReference.observe(.value) { [weak self] snapshot in
guard let self = self else { return }
self.tableView.reloadData()
}
我试图在 getData
里面做同样的工作函数而不是 observe(.value)
功能和应用程序崩溃。databaseReference.getData { [weak self] error, snapshot in
guard let self = self else { return }
self.tableView.reloadData()
}
那么为什么应用程序在内部崩溃 getData
函数并且它没有在内部崩溃 observe(.value)
功能?最佳答案
火力士在这里
虽然 Firebase SDK 在后台线程上执行其网络和其他 I/O,但它实际上在主线程上调用您的回调。
但似乎getData
在这里不这样做,这是一个错误。所以感谢您发现并报告这一点。 🙏
我提交了错误 #8245在 Github 存储库上,因此请检查那里的进度。
关于ios - 使用 Firebase 时,我应该什么时候在主线程上进行用户界面工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67941742/