-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
Context is important if you ship your class for others to use.Context lets your class observer verify that its you observer which is being called.
The problem with not passing an observer is, if some one subclass your class and register an observer for the same object,same key and he does not passes a context ,then the super class observer can be called multiple time.
A variable which is unique and internal for your use is a good context.
For more information.