bound controls do not update until focus change

This should be a pretty basic question:


I have in my view controller an NSMuteableDictionary with various controls bound to key paths, like "dict.key" from the controller where "dict" is a property of the controller.


This all works as one would expect unless the dictionary is updated by other means, in which case the controls do not reflect the updated values until they gain focus. The other way works fine - if the UI updates a value, I can observe the key change as one would expect.


This would indicate the value is being updated outside of KVC, but I'm using [dict setValue: forKey:], so that can't be it.


If I need my UI to reflect state from external modifications, is this not the correct mechanism to use? Or am I missing something really fundamental?

Replies

solved - answer was (as I expected) kind of obvious in retrospect, the modification to the underlying dictionary was happening from outside the main dispatch queue. Now everything works!