C++ Event Listener Design Pattern
flipcode.com
flipcode.com
static void* kFooContext= &kFooContext
... [foo addObserver:self forKeyPath:@"bar" options:... context:kFooContext ] ...
if(context==kFooContext){ NSFoo* foo=(NSFoo*)object;... }
A better alternative is to use a blocks/lambda based approach, that way you can have several distinct callbacks and don't have to handle routing yourself. (see Facebook KVOController)