NSArray、NSMutableArray和NSDictionary、NSMutableDictionary的深拷贝和浅拷贝

  • 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];

你可能感兴趣的:(NSArray、NSMutableArray和NSDictionary、NSMutableDictionary的深拷贝和浅拷贝)