我想在NSOperation添加或从NSOperationQueue中删除时得到通知。我正在尝试为“操作”属性(当前在Queue中的NSOperations数组)设置键值观察,但未触发。我的语法有问题吗?
@implementation myOperationQueueSubclass
-(id)init
{
if (self = [super init])
{
// Initialization code here
[self addObserver:self
forKeyPath:@"operations"
options:0
context:nil];
}
return self;
}
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
NSLog(@"queue changed...");
if ([keyPath isEqualToString:@"operations"]) {
if (self.operationCount == 0) {
// No ops
} else {
// Has ops
}
}
}
最佳答案
语法没有错,但是您观察的是数组属性,而不是数组本身(无论如何,当数组发生突变时,它都不会发出KVO通知)。
如果由于某种原因重新分配了通知,您会收到通知,但是NSOperationQueue
必须麻烦手动进行通知或使用KVC accessors,以允许其他人查看何时向其operations
添加对象或从其删除对象。
关于objective-c - 如何观察NSOperationQueue的“操作”属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11943883/