iOS 浅拷贝,深拷贝,数组拷贝
首先要想对对象进行copy或者mutableCopy,对象必须实现NSCopying或者NSMutableCopying协议,例如:NSMutableArray,NSArray,NSString等实现了该协议。
.h
.m
1. 对象 copy mutableCopy
对象copy或者mutableCopy产生的新对象都会是新的地址,但是copy对象的属性指向的还是之前的地址
2. 数组 copy mutableCopy
无论copy,还是mutableCopy,产生的数组内元素都跟之前数组的元素地址相同.
只有使用以下方法,才会对数组内元素进行copy
1 | - (instancetype)initWithArray:(NSArray<ObjectType> *)array copyItems:(BOOL)flag; |
结果如下:
3. 数组镶嵌数组 copy mutableCopy
使用以下方法只会对第一层对象进行深拷贝
1 | - (instancetype)initWithArray:(NSArray<ObjectType> *)array copyItems:(BOOL)flag; |
可以偷懒的使用NSKeyedUnarchiver实现多层数组深拷贝