黑马程序员技术交流社区
标题:
请教一个关于NSDictionary的问题
[打印本页]
作者:
cogddo
时间:
2015-5-14 10:25
标题:
请教一个关于NSDictionary的问题
如何将NSDictionary里面内容通过代码产生可变和不可变副本??求大神告知。
作者:
Ak47_1
时间:
2015-5-14 18:52
简单的来说 不可变就是只复制指向对象的指针,可变就是复制源对象;
NSDictionary *dic1 = @{ @"k1":@"v1"};
// 通过copy 来复制 这一种是浅复制, 形象的比喻下 ,浅复制就是 :人跟影子的关系 , 你没啦,影子也就没有啦。
NSDictionary *dic2 = [dic1 copy];
//这种就是深复制 形象的比喻就是 : 把人克隆出来一个,你没啦,克隆人还在。
NSDictionary *dic3 = [dic 1 mutablecopy];
浅复制的定义是:指针拷贝,源文件和新文件指向的是同一个地址,也就是说浅拷贝要复制出来一个新的文件,但两个文件的地址还是一个。浅拷贝的话是只有不可变数组(如:NSArray,NSSet,NS字典)遇上copy,才是浅拷贝,剩下的都是深拷贝。
深复制的定义是:内容复制,也就是还是要复制出来一个新的对象,但新对象和原来对象的地址是两个完全没有关系的地址。改变新对象,旧对象就不会改变。改变旧对象新对象就不会改变
作者:
cogddo
时间:
2015-5-15 10:23
那就是 copy出来都是不可变的,,深拷贝还是前拷贝,要看对象类型(或者数据类型)
mutableCopy出来都是可变的,,深拷贝还是前拷贝,要看对象类型(或者数据类型)。是这样的理解吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2