【发布时间】:2015-07-07 10:46:49
【问题描述】:
我正在寻找类似于 Firebase completion block 的东西,以确认我在切换到下一个 ViewController 之前已删除所有 Firebase 回调
ref.removeAllObservers()
let resultController = self.storyboard!.instantiateViewControllerWithIdentifier("Home") as! UIViewController
self.presentViewController(resultController, animated: true, completion: nil)
【问题讨论】:
-
Firebase API 中没有“显示所有已注册的观察者”方法。就是说:如果您遇到了挥之不去的观察者,您可能在子节点中注册了它们,但只在顶级 ref 上调用了
removeAllObservers。您必须从最初注册它的确切 ref/child 中删除每个观察者。请参阅firebase.com/docs/web/api/query/off.html:“在父侦听器上调用 off() 不会自动删除在子节点上注册的侦听器,还必须在任何子侦听器上调用 off() 以删除回调。” -
谢谢弗兰克!这是一个巨大的帮助。我没有删除子节点上的观察者 - 这是主要错误
-
是的,我们最近在 Web API 文档中扩展了该部分,因为这是一个容易犯的错误。我们还应该为 iOS 和 Android 记录它。我将添加我的评论作为答案。