Изглежда, че 3.0 NDA е отменено, така че това трябва да е безопасно да се зададе. Ако това нарушава NDA, моля, уведомете ме, за да мога да премахна публикацията, бързо.
Имам много тривиална реализация за KVO на NSOperationQueue. Проблемът ми е, че когато компилирам срещу 2.2.1 SDK, получавам различни резултати за въпросния NSOperationQueue за устройство, използващо 3.0, или такова, използващо 2.2.1. Потвърдих това на 1 iPod Touch с 2.2.1, един с 3.0 и два комплекта iPhone с подобни настройки.
Кодът изглежда така:
// set observer
[self.myOperationQueue addObserver:self forKeyPath:@"operations" options:NSKeyValueObservingOptionNew context:NULL];
// implementation
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"operations"]) {
NSInteger operationCount = [[(NSOperationQueue*)object operations] count];
NSArray *operations = [(NSOperationQueue*)object operations];
}
}
Според кода по-горе, устройството, работещо с 3.0, ще върне правилния брой операции и правилните операции. Устройство, изпълняващо 2.2.1, винаги ще връща нула за операции и 0 за operationCount.
Изглежда не мога да определя защо това е така. Всички компилации са компилирани спрямо 2.2.1.
ЗАБЕЛЕЖКА
Според отговора на Мат по-долу; 'object' е нула на 2.2.1. Не е нула на 3.0.