如何确认 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 中删除每个观察者。
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.
我正在寻找类似于 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 中删除每个观察者。
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.