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

Ios 如何确认ref.removeAllObservers()已完成?,ios,swift,firebase,Ios,Swift,Firebase,我正在寻找类似Firebase的东西,以确认在切换到下一个ViewController之前我已删除了所有Firebase回调 ref.removeAllObservers() let resultController = self.storyboard!.instantiateViewControllerWithIdentifier("Home") as! UIViewController self.presentViewController(resultController, animated

我正在寻找类似Firebase的东西,以确认在切换到下一个ViewController之前我已删除了所有Firebase回调

ref.removeAllObservers()
let resultController = self.storyboard!.instantiateViewControllerWithIdentifier("Home") as! UIViewController
self.presentViewController(resultController, animated: true, completion: nil)

是什么让您认为在
removeAllObservers()
调用过程中没有删除观察者,该操作是异步的,您应该等待什么?没有必要,这是同步操作

通常,不要使用
removeAllObservers()
删除观察者,因为这样也可以删除由其他类添加的观察者。最好将
firebasehold
s数组保留在某个位置,并在不需要时逐个删除它们

描述它。

Firebase API中没有“显示所有注册的观察者”方法

这就是说:如果你被缠住了观测者,你可能会在子节点中注册他们,但只在顶级ref上调用
removeAllObservers
。你必须将每个观测者从最初注册的ref/子节点中移除

见:

在父侦听器上调用
off()
不会自动删除在子节点上注册的侦听器,还必须在任何子侦听器上调用
off()
,以删除回调


Firebase API中没有“显示所有注册的观察者”方法。这就是说:如果你被缠住了观测者,你可能会在子节点中注册他们,但只在顶级ref上调用
removeAllObservers
。你必须将每个观测者从最初注册的ref/子节点中移除。请参阅:“对父侦听器调用off()不会自动删除在子节点上注册的侦听器,还必须对任何子侦听器调用off()才能删除回调。”谢谢Frank!这是一个巨大的帮助。我没有删除子节点上的观察者-这是主要的错误是的,我们最近在web API文档中扩展了这一部分,因为这很容易出错。我们还应该为iOS和Android编写文档。我将添加我的评论作为回答。谢谢罗伯特!保留FirebaseHandles数组是有意义的。我的主要问题是,我在顶层运行RemoveAllobserver,它没有关闭我的子节点回调。