集合类:(以数组为例)
NSMutableArray |
NSArray |
|---|---|
copy:新地址 |
copy:同样地址 |
mutablecopy:新地址 |
mutablecopy:新地址 |
| 不论哪种数组内部的元素地址都是一份 | 不论哪种数组内部的元素地址都是一份 |
非集合类:(字符串为例)
NSMutableString |
NSString |
|---|---|
copy:新对象 |
copy:同样地址 |
mutablecopy:新对象 |
mutablecopy:新对象 |
能实现真正意义上的深复制目前所知道的只能是归档后再解档(非自定义模型); [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:arr]]
| 源对象类型 | 拷贝方式 | 目标对象类型 | 拷贝类型(深/浅) |
|---|---|---|---|
mutable对象 |
copy |
不可变 | 深拷贝 |
mutable对象 |
mutablecopy |
可变 | 深拷贝 |
immutable对象 |
copy |
不可变 | 浅拷贝 |
immutable对象 |
mutablecopy |
可变 | 深拷贝 |
可变对象的copy和mutablecopy都是深拷贝
不可变对象的copy是浅拷贝, mutablecopy是深拷贝;
copy方法返回的都是不可变对象;











网友评论