NSOperationQueue наблюдатьValueForKeyPath: не вызывается - PullRequest
0 голосов
/ 11 января 2012

Я перешел по многим ссылкам на SO, применил метод для очереди, но кажется, что наблюдайте за ValveForKeyPath: не вызывается каждый раз, когда очередь добавляет операцию.

- (id)init {
if(!(self = [super init])) return nil;

_imageQueue = [[NSOperationQueue alloc] init];

[_imageQueue addObserver:self forKeyPath:@"imageQueue" options:0 context:nil];

return self;
}

- (void)observeValueForKeyPath:(NSString *)keyPath 
                  ofObject:(id)object
                    change:(NSDictionary *)change 
                   context:(void *)context {
    NSLog(@"Observer Received");
}

- (void)loadPreviewPageWithMagazineID:(NSString *)magazineID userID:(NSString *)userID {
    [_imageQueue setMaxConcurrentOperationCount:2];
    for (NSInteger i = 1; i <= _numTotalPages; ++i) {
       //NSLog(@"currenpage = %d, index = %d",_selectedPage,pageIndex);
       NSDictionary *arguments = [NSDictionary dictionaryWithObjectsAndKeys:magazineID, 
                               @"magazineID", userID, @"userID", [NSNumber numberWithInt:i],
                               @"pageNumber", nil];
       NSInvocationOperation *operation = 
           [[NSInvocationOperation alloc] initWithTarget:self 
                                             selector:@selector(savePageToDisk:) 
                                               object:arguments];
       [_imageQueue addOperation:operation];
       [operation release];
    }
 }

Я вызвал функцию loadPreviewPage внутри другойочередь.функция, очевидно, была вызвана, но почему не удалось вызвать visibleValueForKeyPath?

...