根据我的理解,Firebase会执行主线程的操作,并且不应在执行此操作时暂停UI。
下面的代码是一个简化的示例,但在我的代码中的任何地方,我都有一个Firebase观察器,其中包含更新UI的代码,当Firebase下载数据时,用户界面会冻结。
我尝试在一个新的,干净的项目中编写相同的代码,然后问题不再存在。问题可能是通过pod安装Firebase吗?我也在使用GeoFire,这会以任何方式影响吗?
我还尝试将观察者放在DispatchQueue.global()。async块中。我已经尝试完全删除任何DispatchQueue代码,但它完全相同。
func observe() {
firebaseReference.observe(.value, with: { (snapshot) in
DispatchQueue.main.async {
self.collectionView?.reloadData()
}
})
}