Observers should be removed on the same control path that they were placed on. And for the same number of times, they were released or used ref.removeAllObservers () for each path.
Here is the trick I use to keep it in order:
var fbObserverRefs = [FIRDatabaseReference]() // keep track of where observers defined.
... then put the observers in viewDidLoad ():
fbObserverRefs.append(ref.child("user/\(uid)")) fbObserverRefs.last!.observe(.value, with: { snap in
... then, in viewWillDisappear (), take care to remove any released watchers:
// Only true when popped from the Nav Controller stack, ignoring pushes of // controllers on top. if isBeingDismissed || isMovingFromParentViewController { fbObserverRefs.forEach({ $0.removeAllObservers() }) }
jazzgil
source share