我試圖實施的NSMutableArray深和淺拷貝,如何在iOS中實現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
長度:
前的舊陣列的Lenght舊數組後:4
淺拷貝:T 4
長度:
舊陣列之前的Lenght他舊陣列後:4
我不知道爲什麼淺反射覆制刪除不反映到原始NSMutableArray。
初始化'deepCopy'和'shallowCopy'然後重新分配它們既浪費又可能是泄漏,如果你不使用ARC。 – 2013-02-24 09:14:50