Похоже, что соглашение о неразглашении информации 3.0 было отменено, так что об этом можно смело спрашивать. Если это нарушает NDA, дайте мне знать, и я могу удалить сообщение после спешки.
У меня есть очень простая реализация KVO на NSOperationQueue. Моя проблема в том, что при компиляции с SDK 2.2.1 я получаю разные результаты для рассматриваемого 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 вернет правильный operationCount и правильные операции. Устройство, работающее под управлением 2.2.1, всегда будет возвращать nil для операций и 0 для operationCount.
Кажется, не могу понять, почему это так. Все сборки скомпилированы против 2.2.1.
ПРИМЕЧАНИЕ
Согласно ответу Мэтта ниже; 'объект' равен нулю в 2.2.1. Это не ноль на версии 3.0.