15
사전의 특정 키를 관찰 할 수 있습니까? 그렇다면 어떻게해야합니까?사전의 키/항목을 관찰하는 코코아 키 값
사전의 특정 키를 관찰 할 수 있습니까? 그렇다면 어떻게해야합니까?사전의 키/항목을 관찰하는 코코아 키 값
예 (비록 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;
}
매우 중요 : * "NSMutableDictionary"*를 관찰하는 것이 의미가 있지만. 새로운 NSDictionary를 생성하여 NSDictionary의 항목을 "변경"하면 이전 NSDictionary의 객체에서 KVO가 손실됩니다. – cksubs
당신은 어떤 변화를 모니터링 뜻 "관찰"? –
+1이 정말 유용 할 것이기 때문에 –
시도해 보셨습니까? 그렇게하기 위해 약 2 분이 걸렸습니다 ... –