当视图被关闭时,Firestore 快照侦听器是否应该自动删除?

问题描述 投票:0回答:1

我注意到,当视图被关闭时,Firestore 不会自动删除快照侦听器。

例如,在我的登录视图中,我使用 Firestore 快照侦听器获取帐户列表,并将完成处理程序传递给它。登录后,当我导航到“主页”视图并添加新帐户时,“登录”视图中的完成处理程序仍然会被触发。

我知道我们可以手动删除快照监听器,但是 Firestore 不应该在登录视图消失时自动删除快照监听器吗?为什么这没有发生?

此外,在登录视图中,我有一个存储一些数据的状态变量,我尝试在完成处理程序中打印它。我可以看到它仍然保留数据,即使登录视图应该已被释放。为什么这个监听器会在视图的生命周期之外持续存在?

swift firebase google-cloud-firestore freeswitch
1个回答
0
投票

当你需要从Firestore实时读取数据时,你必须附加一个持久化监听器。这意味着,如果您不想再侦听实时更新,则必须显式分离侦听器,以便停止调用您的事件回调。这是必要的,因为允许您的客户端停止使用带宽。带宽更少,付费更少。在 Swift 中它应该看起来像这样:

let listener = query.addSnapshotListener { querySnapshot, error in
  //Get data and handle errors.
}

// ...

// Remove listener to stop listening to changes
listener.remove() //👈
© www.soinside.com 2019 - 2024. All rights reserved.