标签:
-(void)copyDemo { // 在非集合类对象中:对immutable对象进行copy操作,是指针复制,mutableCopy操作时内容复制;对mutable对象进行copy和mutableCopy都是内容复制。用代码简单表示如下: // // [immutableObject copy] // 浅复制 // [immutableObject mutableCopy] //深复制 // [mutableObject copy] //深复制 // [mutableObject mutableCopy] //深复制 // 在集合类对象中,对immutable对象进行copy,是指针复制,mutableCopy是内容复制;对mutable对象进行copy和mutableCopy都是内容复制。但是:集合对象的内容复制仅限于对象本身,对象元素仍然是指针复制。用代码简单表示如下: // // [immutableObject copy] // 浅复制 // [immutableObject mutableCopy] //单层深复制 // [mutableObject copy] //单层深复制 // [mutableObject mutableCopy] //单层深复制 // Baby *baby = [[Baby alloc] init]; //必须实现copy方法 // baby.babyName = @"wei"; NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithCapacity:10]; [dic setObject:@"1" forKey:@"key1"]; NSMutableArray *array1 = [[NSMutableArray alloc] initWithObjects:dic,dic, nil]; NSMutableArray *array2 = [array1 mutableCopy];//单层深拷贝 NSMutableArray *array3 = [[NSMutableArray alloc] initWithArray:array1 copyItems:YES];//里面dic变成不可变了 NSMutableArray* array4 = [NSKeyedUnarchiver unarchiveObjectWithData: [NSKeyedArchiver archivedDataWithRootObject: array1]];//里面dic改变不影响其他数组(其与方法都会影响其他数组) [array2 removeObjectAtIndex:0]; [[array4 objectAtIndex:0] setObject:@"3" forKey:@"key1"]; // [[array4 objectAtIndex:1] setBabyName:@"8888"]; DLog(@"%@ \n %@ \n %@ \n %@",array1,array2,array3,array4); }
标签:
原文地址:http://www.cnblogs.com/weiboyuan/p/5070512.html