키를 NSMutableDictionary
의 키로 사용하는 것이 단점입니까, 어떤 거대한 성능상의 히트가 있습니까?코코아 : NSMutableDictionary에서 NSSet을 키로 사용할 때의 단점은 무엇입니까?
키가 코코아 컨테이너에 복사 된 것 같습니다. NSSet이 사전에 복사되었다는 의미입니까? 아니면이 경우에 NSSet을 유지하는 최적화가 있습니까?
NSMutableDictionary * dict = [NSMutableDictionary dictionary];
NSSet * set;
set = [NSSet setWithObjects:@"a", @"b", @"c", @"d", nil];
[dict setObject:@"1" forKey:set];
set = [NSSet setWithObjects:@"b", @"c", @"d", @"e", nil];
[dict setObject:@"2" forKey:set];
id key;
NSEnumerator * enumerator = [dict keyEnumerator];
while ((key = [enumerator nextObject]))
NSLog(@"%@ : %@", key, [dict objectForKey:key]);
set = [NSSet setWithObjects:@"c", @"b", @"e", @"d", nil];
NSString * value = [dict objectForKey:set];
NSLog(@"set: %@ : key: %@", set, value);
출력 : Can a NSDictionary take in NSSet as key?
예제 코드에 관련
내가 키가 코코아 용기에 복사됩니다 생각
2009-12-08 15:42:17.885 x[4989] (d, e, b, c) : 2
2009-12-08 15:42:17.887 x[4989] (d, a, b, c) : 1
2009-12-08 15:42:17.887 x[4989] set: (d, e, b, c) : key: 2
+1, 나는 단지 불변의 인스턴스를 고려하고있다. 나는 변경 가능한 키를 갖는 것이 문제가 될 것이라고 생각한다. – stefanB