ダメ
NSMutableDictionary * dictionary = [NSMutableDictionary dictionaryWithObject:[NSMutableArray arrayWithObjects:@"上田",@"山田",@"川田", nil] forKey:@"name"];
NSMutableDictionary *copydictonary = [dictionary MutableCopy];
[[dictionary objectForKey:@"name"] removeObjectAtIndex:0];
dictionary = [copydictonary MutableCopy];
上記の場合、dictionaryの変更がcopydictonaryにも適用されてしまう様だ。
Ok
NSMutableDictionary * dictionary = [NSMutableDictionary dictionaryWithObject:[NSMutableArray arrayWithObjects:@"上田",@"山田",@"川田", nil] forKey:@"name"];
NSMutableArray *copy = [[dictionary objectForKey:@"name"] mutableCopy];
[[dictionary objectForKey:@"name"] removeObjectAtIndex:0];
[dictionary setObject:copy forKey:@"name"];
変更する階層まで潜って、取り出さないと元を変更すると上書きしてしまうようでした。