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是重新分配一块内存赋值后返回,那么就是真正的深拷贝。如果直接返回自身,那么它只是浅拷贝。 |