Y at-il un inconvénient à utiliser NSSet
comme clé dans NSMutableDictionary
, des pièges à connaître, des performances énormes?Cocoa: Y at-il des inconvénients à utiliser NSSet comme clé dans NSMutableDictionary?
Je pense que les clés sont copiées dans des conteneurs Cocoa, cela signifie-t-il que NSSet est copié dans le dictionnaire? Ou y a-t-il une optimisation qui retient le NSSet dans ce cas?
liés à Can a NSDictionary take in NSSet as key?
Exemple Code:
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);
Sorties:
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, oui Je ne considère que les instances immuables, je comprends qu'il serait problématique d'avoir des clés mutables. – stefanB