将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]];
仍会更改容器中的值。     
已邀请:
您只是将
temp
设置为与
container
共享相同的指针。 要获得容器的真实(独立)副本,请使用以下命令:
NSMutableArray *temp = [[container mutableCopy] autorelease];
Objective-C(C的面向对象派生)使用C指针表示对象变量(即
NSMutableArray *container
中的
*
)。 而c指针仅指向内存中的地址。因此,如果要通过
temp = container;
temp
设置为与
container
相同的值,则只需给temp指定与
container
相同的地址即可。因此,更改两者中的任何一个也将更改另一个。或更正确的说法:您实际上只是在更改其中之一。看起来好像您都在更改它们,但实际上您只是在两个指针指向同一对象实例,而这正在被更改。     
您只是在引用内存中的相同位置,即相同的数组。您要做的是复制容器数组:
temp = [container mutableCopy];
    

要回复问题请先登录注册