Cocoa's Key-Value Observing facilities are extremely powerful and useful. Unfortunately they have a really terrible API that's inherently broken in a couple of different ways. I want to discuss how it's broken, and a way to make it better. What's Broken There are three major problems with the KVO API, all of which relate to multiple levels of the class hierarchy registering observers. This is impo