集合类:(以数组为例)
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方法返回的都是不可变对象;
网友评论