如何确认 ref.removeAllObservers() 已完成?

How can I confirm ref.removeAllObservers() has completed?

我正在寻找类似于 Firebase completion block 的东西,以确认我在切换到下一个 ViewController

之前删除了所有 Firebase 回调
ref.removeAllObservers()
let resultController = self.storyboard!.instantiateViewControllerWithIdentifier("Home") as! UIViewController
self.presentViewController(resultController, animated: true, completion: nil)

是什么让您认为在 removeAllObservers() 调用期间不会删除观察者,此操作是异步的,您应该等待什么?没必要,是同步操作。

一般情况下,不要移除removeAllObservers()的观察者,因为这样你也可以移除另一个类添加的观察者。最好在某处保留 FirebaseHandle 的数组,并在不需要时将它们一一删除。

Detaching Blocks描述了它。

Firebase API 中没有 "show me all registered observers" 方法。

就是说:如果您遇到挥之不去的观察者,您可能将它们注册在子节点中,但只在顶级 ref 上调用了 removeAllObservers。您必须从最初注册它的确切 ref/child 中删除每个观察者。

查看web docs for off

Calling off() on a parent listener will not automatically remove listeners registered on child nodes, off() must also be called on any child listeners to remove the callback.