-
NSArray、NSMutableArray
NSArray *temp = [NSArray array];
[temp copy]; // 浅拷贝
[temp mutableCopy]; // 深拷贝
NSMutableArray *temp = [NSMutableArray array];
[temp copy]; // 深拷贝
[temp mutableCopy]; // 深拷贝
在这里要强调一下:数组在做深拷贝的时候,仅仅是拷贝array这个对象,如果数组元素是基本的数据类型(包括字符串),那一样会被深拷贝,但如果数组元素是自定义的数据类型,这是数组集合内部的元素仍然是指针拷贝(浅拷贝)。
为了解决这个问题,可以调用下面这个系统方法:
NSMutableArray *tempA = [[NSMutableArray alloc] initWithArray:array copyItems:YES];
这个方法会把数组里面的元素也进行深拷贝。
-
NSDictionary、NSMutableDictionary
dictionary也有与array类似的方法
NSDictionary *dict = [[NSMutableDictionary alloc] initWithDictionary:dictionary copyItems:YES];