黑马程序员技术交流社区

标题: 创建一个NSDictionary对象,随便往里面添加内容,然后通过... [打印本页]

作者: 364827317    时间: 2015-12-1 11:53
标题: 创建一个NSDictionary对象,随便往里面添加内容,然后通过...
创建一个NSDictionary对象,随便往里面添加内容,然后通过代码产生可变和不可变副本,这些复制是深复制还是浅复制?

作者: ZXY66452    时间: 2015-12-1 18:02
NSDictionary *dic = [dictionary copy];//地址不变,retaincount+1
NSMutableDictionary* cpdic1 = [dic mutableCopy];//地址改变,但是数组中成员指针不变,浅拷贝
NSMutableDictionary *cpdic2 = [[NSMutableDictionary alloc]initWithDictionary:cpdic1 copyItems:YES];//调用后,会对原NSDictionary中的每个元素调用其copy函数,并把返回的id加入到新的数组中。所以这是依赖于Obj对象类实现的深拷贝,如果- (id)copywithZone:(NSZone*)zone是重新分配一块内存赋值后返回,那么就是真正的深拷贝。如果直接返回自身,那么它只是浅拷贝。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2