Я создаю объект MyOperation (унаследованный от NSOperation) и добавляю его в NSOperationQueue. Потом делаю КВО на MyOperation. Я использую этот метод
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;
чтобы получить значение из MyOperation, если оно завершено. В этом методе я использую удобный метод из другого класса, чтобы получить некоторые другие данные.
Может тут проблемы с синхронизацией в методеObservValue...?