A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

创建一个NSDictionary对象,随便往里面添加内容,然后通过代码产生可变和不可变副本,这些复制是深复制还是浅复制?

1 个回复

倒序浏览
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是重新分配一块内存赋值后返回,那么就是真正的深拷贝。如果直接返回自身,那么它只是浅拷贝。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马