我正在使用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
的一些实例,或者如果我使用我的子类NSURLConnection
(NSURLConnectionSSL
如果重要的话)创建一些新的实例,该怎么办?他们?
如果我想在整个程序中观察并在全局而不是单个类中进行操作会怎么样?