Key-Value观察任何NSOperationQueue变量

时间:2014-04-17 14:20:39

标签: ios objective-c key-value-observing

我正在使用KVO来观察NSOperationQueue变量中的更改,以便以这种方式显示/隐藏[UIApplication sharedApplication].networkActivityIndicatorVisible

[_operationQueue addObserver:self
                      forKeyPath:@"operationCount"
                         options:0
                         context:NULL];

- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context
{
    if ([object isKindOfClass:[NSOperationQueue class]]) {
        if ([keyPath isEqualToString:@"operationCount"]) {
            if ([(NSOperationQueue *)object operationCount] == 0) {
                if ([UIApplication sharedApplication].networkActivityIndicatorVisible) {
                    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
                }
            }
            else if ([(NSOperationQueue *)object operationCount] > 0) {
                if (![UIApplication sharedApplication].networkActivityIndicatorVisible) {
                    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
                }
            }
        }
    }
    else {
        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    }
}

我考虑过对NSOperationQueue的任何实例进行全局观察 - new / main / current。

我可以观察当前和主要,但例如如果我正在创建NSOperationQueue的一些实例,或者如果我使用我的子类NSURLConnectionNSURLConnectionSSL如果重要的话)创建一些新的实例,该怎么办?他们?

如果我想在整个程序中观察并在全局而不是单个类中进行操作会怎么样?

0 个答案:

没有答案