将nsmutablearray设置为与另一个相同的值会同时改变两者吗?
|
我有一个称为container的NSMutableArray和一个称为temp的NSMutableArray。为了临时工作,我有:
temp = container;
现在,每当我更改临时内容时,例如:
[temp replaceObjectAtIndex:1 withObject:[NSNumber numberWithFloat:0.9f]];
它会改变温度,并且也会更改容器中的值。为什么是这样?我该如何阻止它?
编辑:好的,我按照建议将其更改为temp = [[container mutableCopy] autorelease];
现在的问题是这一行:
[temp replaceObjectAtIndex:1 withObject:[NSNumber numberWithFloat:0.9f]];
仍会更改容器中的值。
没有找到相关结果
已邀请:
2 个回复
魄龟呸筹
设置为与
共享相同的指针。 要获得容器的真实(独立)副本,请使用以下命令:
Objective-C(C的面向对象派生)使用C指针表示对象变量(即
中的
)。 而c指针仅指向内存中的地址。因此,如果要通过
将
设置为与
相同的值,则只需给temp指定与
相同的地址即可。因此,更改两者中的任何一个也将更改另一个。或更正确的说法:您实际上只是在更改其中之一。看起来好像您都在更改它们,但实际上您只是在两个指针指向同一对象实例,而这正在被更改。
缔恃钨