self.arr=[NSMutableArray new];
self.dic=[NSMutableDictionary new];
[self.arr addObjectsFromArray:@[@"1",@"2",@"3"]];
[self.dic setObject:self.arr forKey:@"key1"];
[self.arr removeAllObjects];
[self.arr addObjectsFromArray:@[@"3",@"4",@"5"]];
[self.dic setObject:self.arr forKey:@"key2"];
NSLog(@"%@",self.dic);
输出结果:
{
key1 = (
3,
4,
5
);
key2 = (
3,
4,
5
);
}
[self.arr removeAllObjects];
->
self.arr=[NSMutableArray new];
oc对象是引用类型的!肯定会跟着变!
_arr1 = [NSMutableArray new];
[self.arr1 addObjectsFromArray:@[@"3",@"4",@"5"]];
[_dic setValue:_arr1 forKey:@"key2"];
这样不就行了
把数组深拷贝一下,然后添加到字典中,就可以了
你的字典里存的是同一个地址(对象)的数据(self.arr),所以只要self.arr内容改变,字典的内容就变
可以在第二次set的时候:执行 set:[self.arr copy]或者[self.arr mutableCopy];