Where should I remove the observer for NSNotification in Swift, since viewDidUnload and dealloc() are unavailable?
You can use three methods:
after popViewController, back navigationController or dismissViewControllerAnimated:
deinit {
print("Remove NotificationCenter Deinit")
NSNotificationCenter.defaultCenter().removeObserver(self)
}
viewDidDisappear, remove after it is already the next view controller:
override func viewDidDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
viewWillDisappear - before opening the next view:
override func viewWillDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
Swift 3.0 syntax:
NotificationCenter.default.removeObserver(self)