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];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容