KVO only works with values, NSNotification can be used to change values, but it can be used for anything and can carry a much larger payload.
For example, you could publish NSNotification whenever the file completed the download, and user information might contain the time taken to load the bytes and the path to the file system where the file was saved.
source share