我想在我的班级 cSoundChannel 中观察 NSMutableArray。因此,在阅读了这篇文章 Observing an NSMutableArray for insert/removal之后 ,我以这种方式实现了关键观察。
对于 cSoundChanel 类,
我的可变数组属性是
@property (assign, nonatomic) NSMutableArray* midiDevices;
我在类中使用 kvo 数组访问器介绍的函数如下:
- (void) addmidiDevicesObject:(NSObject *) str {
[self insertObject:str inMidiDevicesAtIndex:[_midiDevices count]];
}
- (void)insertObject:(NSObject *)str inMidiDevicesAtIndex:(NSUInteger)index {
[self.midiDevices insertObject:str atIndex:index];
return;
}
对于需要观察 midiDevices 的 ViewController.m 文件,我执行了以下操作。
[self.cSoundChannel addObserver:self forKeyPath:@"midiDevices" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
并期望能够在...中观察可变数组
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"midiDevices"]) {
NSLog(@"Let's see!");
}
}
但唉......它没有打印“让我们看看!” 观察其他事情...... NSString 等工作......
有什么我错过的吗?帮助!