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拷贝后两个对象的内存地址是不一样的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 道歉 之前我的一篇关于深浅拷贝的文章,里面有诸多错误,主要是混淆了混淆copy、mutableCopy和深浅拷贝,...
    西木柚子阅读 3,221评论 20 46
  • 这些天开发遇到些数据拷贝的问题,然后在深浅拷贝上�有些迷糊,网上找了些资料,看了半天也不是很明白,最后决定写代码测...
    飞到哪阅读 362评论 0 2
  • 引言 在对于自定义的对象支持copy功能,也就是我们要给自定义的对象发送copy message,那我们就要手动实...
    骁驰阅读 1,594评论 0 7
  • (本文根据CocoaChina上的一篇帖子整理,后期附上链接)最开始,我们需要清楚一些关于内存分配方式的基础知识。...
    CaptainJK阅读 228评论 0 0
  • 重要概念 1.我们所生存的这个世界,并不是冷冰冰的客观存在,这个世界是有生命的,它甚至可能是有灵魂的……你任何对待...
    13d787764fdd阅读 175评论 1 1