NSNotification VS KVO

2019-01-19 03:50发布

问题:

I feel that i don't fully understand difference between KVO and NSNotification... They seem to be so similar... Could you make some example showing when is best to use one method and when the other ?

I don't speak about Bind and IB, but i mean add Observer programmatically in my code with NSNotificationCenter or KVO

[self.preferenceController addObserver:self 
                                    forKeyPath:@"color" 
                                       options:NSKeyValueObservingOptionOld 
                                       context:@"Color-change"
];

回答1:

KVO only works on values, NSNotification can be used for value changes but it can be used for anything and can carry a much greater payload.

For example, you could have an NSNotification posted whenever a file has finished downloading and the userInfo could contain the length of time it took, the number of bytes downloaded and the filesystem path that the file has been saved to.