cocoa键值观察字典中的键/条目

是否可以观察字典中的特定键? 如果是这样,我该怎么办呢?

是的(尽pipe观察NSMutableDictionary只是有意义的)。

 @interface Foo : NSObject @end @implementation Foo - (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { NSLog(@"observing: -[%@ %@]", object, keyPath); NSLog(@"change: %@", change); } @end int main (int argc, const char * argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; Foo * f = [[Foo alloc] init]; NSMutableDictionary * d = [NSMutableDictionary dictionary]; [d addObserver:f forKeyPath:@"foo" options:0 context:NULL]; [d setObject:@"bar" forKey:@"foo"]; [d removeObjectForKey:@"foo"]; [d removeObserver:f forKeyPath:@"foo"]; [f release]; [pool drain]; return 0; } 

日志:

 2010-12-21 17:39:53.758 EmptyFoundation[94589:a0f] observing: -[{ foo = bar; } foo] 2010-12-21 17:39:53.764 EmptyFoundation[94589:a0f] change: { kind = 1; } 2010-12-21 17:39:53.765 EmptyFoundation[94589:a0f] observing: -[{ } foo] 2010-12-21 17:39:53.765 EmptyFoundation[94589:a0f] change: { kind = 1; }