observeValue
observeValueForKeyPath is a method that is part of Apple's Key-Value Observing (KVO) system in Objective-C and Swift. It is called automatically by the observed object whenever a change occurs to a key path that has been registered for observation. The observeValueForKeyPath method is implemented in the observer object.
The method receives four parameters: the key path that changed, the object that changed, a dictionary of
When observeValueForKeyPath is called, the observer can then inspect the change dictionary to determine what happened
KVO allows objects to be notified of changes to properties of other objects without needing explicit delegation