iOS-深浅拷贝

深拷贝:复制对象并且复制对象里面的内容完全拷贝

浅拷贝:指针拷贝只拷贝对象本身不拷贝里面内容

看是不是深拷贝主要看是不是拷贝了对象里面的内容

copy、mutableCopy系统自带的这两个拷贝都属于浅拷贝

实现深拷贝的方式:

1、可以自定义拷贝(要看具体拷贝的内容)

并不是所有对象都可以拷贝只有遵守了拷贝协议的对象才可以

拷贝比如:SString

NSArray NSDictionary

(1)导入协议

(2)实现协议方法、自定义拷贝

①、copyWithZone:

②、mutableCopyWithZone:

2、系统提供给了深拷贝的方法copyItems如果是YES就是深拷贝

(1)数组的:-

(instancetype)initWithArray:(NSArray *)array

copyItems:(BOOL)flag

(2)字典的:-

(instancetype)initWithDictionary:(NSDictionary

ObjectType> *)otherDictionary copyItems:(BOOL)flag

不可变对象copy ->不可变对象

可变对象copy ->不可变对象

不可变对象mutableCopy ->可变对象必须用对应的类型去接收

可变对象mutableCopy ->可变对象必须用对应的类型去接收

mutableCopy?深浅拷贝

如果:

指针拷贝->浅拷贝

对象拷贝->深拷贝

那么:mutableCopy

->深拷贝

在使用mutableCopy拷贝后两个对象的内存地址是不一样的

你可能感兴趣的:(iOS-深浅拷贝)