【发布时间】:2021-07-18 06:00:00
【问题描述】:
我想知道在属性中存储 Firebase 侦听器(例如 AuthStateDidChangeListener 或文档快照侦听器)有什么好处。
例如:
final class SessionStore: ObservableObject {
@Published private(set) var currentUser: User?
private var handle: AuthStateDidChangeListenerHandle?
private var listener: ListenerRegistration?
func listen() {
guard handle == nil else { return }
// This code will work irrespective of whether I put "handle =" or not
handle = Auth.auth().addStateDidChangeListener { auth, _ in
if let user = auth.currentUser {
self.currentUser = user
} else {
self.currentUser = nil
}
}
}
}
如果我没有将 Auth State Change Listener 存储在 handle 属性中,后果会是什么?据我所知,代码的工作原理相同。同样,对于文档快照侦听器,我是否将侦听器存储在属性中有什么区别:
listener = db.collection("col1").document("doc1").addSnapshotListener { snapshot, error in
\\...
}
对比不存储它,只是拥有:
db.collection("col1").document("doc1").addSnapshotListener { snapshot, error in
\\...
}
总结:
将AuthStateDidChangeListener 或文档快照侦听器存储在handle 或listener 等属性中与根本不存储有什么区别?不保存会有什么后果?
【问题讨论】:
标签: ios firebase google-cloud-firestore swiftui firebase-authentication