【发布时间】:2013-02-24 09:02:05
【问题描述】:
我正在尝试为 NSMutableArray 实现深拷贝和浅拷贝,
self.oldArray =[[NSMutableArray alloc] initWithCapacity:0];
self.shallowCopy =[[NSMutableArray alloc] initWithCapacity:0];
self.deepCopy =[[NSMutableArray alloc] initWithCapacity:0];
//add object to old Array
[self.oldArray addObject:@"rooban"];
[self.oldArray addObject:@"radha"];
[self.oldArray addObject:@"jesus"];
[self.oldArray addObject:@"god"];
self.shallowCopy=[[NSMutableArray alloc] initWithArray:self.oldArray];
self.deepCopy=[[NSMutableArray alloc] initWithArray:self.oldArray copyItems:YES];
//deep copy
NSLog(@"Lenght of the Old Array before: %d",self.deepCopy.count);
[self.deepCopy removeObject:@"rooban"];
NSLog(@"Lenght of the Old Array After: %d",self.oldArray.count);
//shallow copy
NSLog(@"Lenght of the Old Array Before: %d",self.shallowCopy.count);
[self.shallowCopy removeObject:@"rooban"];
NSLog(@"Lenght of the Old Array After: %d",self.oldArray.count);
这个程序的输出是,
深拷贝:
之前旧阵列的长度:4
之后旧数组的长度:4
浅拷贝:
之前旧阵列的长度:4
之后旧数组的长度:4
我不知道为什么浅拷贝删除没有反映到原始 NSMutableArray。
【问题讨论】:
-
一开始就初始化
deepCopy和shallowCopy然后重新分配它们既浪费又可能是泄漏,如果您不使用 ARC。
标签: ios shallow-copy deep-copy