Removing Observers Safely
Avoid leaks and crashes from stale observers.
Removing Observers Safely
Observers must be removed when no longer needed. A dangling observer can fire after its owner is gone, causing bugs or, with old APIs, crashes.
Why Removal Matters
Selector-based observers historically had to be removed in deinit to avoid messaging a deallocated object.
import Foundation
class Watcher: NSObject {
override init() { super.init() }
deinit { NotificationCenter.default.removeObserver(self) }
}
print("Removes itself on deinit")All lessons in this course
- Posting and Observing Notifications
- Notification userInfo Payloads
- Removing Observers Safely
- The Observer Pattern Alternatives