Има ли някакъв недостатък при използването на NSSet
като ключ в NSMutableDictionary
, някакви проблеми, за които трябва да знаете, някакви огромни удари в производителността?
Мисля, че ключовете се копират в Cocoa контейнери, означава ли, че NSSet се копира в речника? Или има някаква оптимизация, която запазва NSSet в този случай?
Свързано с Може ли NSDictionary да приема 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);
Изходи:
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