简单的来说 不可变就是只复制指向对象的指针,可变就是复制源对象;
NSDictionary *dic1 = @{ @"k1":@"v1"};
// 通过copy 来复制 这一种是浅复制, 形象的比喻下 ,浅复制就是 :人跟影子的关系 , 你没啦,影子也就没有啦。
NSDictionary *dic2 = [dic1 copy];
//这种就是深复制 形象的比喻就是 : 把人克隆出来一个,你没啦,克隆人还在。
NSDictionary *dic3 = [dic 1 mutablecopy];
浅复制的定义是:指针拷贝,源文件和新文件指向的是同一个地址,也就是说浅拷贝要复制出来一个新的文件,但两个文件的地址还是一个。浅拷贝的话是只有不可变数组(如:NSArray,NSSet,NS字典)遇上copy,才是浅拷贝,剩下的都是深拷贝。
深复制的定义是:内容复制,也就是还是要复制出来一个新的对象,但新对象和原来对象的地址是两个完全没有关系的地址。改变新对象,旧对象就不会改变。改变旧对象新对象就不会改变
|