iOS对象深浅拷贝

  • 非集合对象
    在非集合类对象中,对immutable对象进行copy操作,是指针复制,mutableCopy操作时是内容复制;对mutable对象进行copy和mutableCopy都是内容复制。
    [imutableObj copy]//浅复制
    [imutableObj mutableCopy]//深复制
    [mutableObj copy]深复制
    [mutableObj mutableCopy]深复制
  • 对于集合类对象
    在集合类对象中,对immutable对象进行copy,是指针复制,mutableCopy是内容复制;对mutable对象进行copy和mutableCopy都是内容复制。但是:集合对象的内容复制仅限于对象本身,对象里元素仍然是指针复制。
    [immutableObject copy] // 浅复制
    [immutableObject mutableCopy] //单层深复制
    [mutableObject copy] //单层深复制
    [mutableObject mutableCopy] //单层深复制

自己总结:无论是集合类还是非集合类,如果是不可变对象,copy的话,都是浅拷贝,mutableCopy都是深拷贝。 如果是可变对象,无论copy还是mutableCopy都是深拷贝。 因为,可变对象copy出去的副本,不希望自己改变时,副本也跟着改变;副本改变时,自己也不希望跟着改变 。 不可变对象,同理,copy的话,副本无法再操作,可以是浅拷贝,mutableCopy,如果是浅拷贝的话,副本的操作,会影响原对象自己,这是不希望出现的,所以,是深拷贝。

最终:copy和mutableCopy都希望操作之后,原件和副本两个对象之间相互不影响。
以上均为个人试验测试,理解,如有问题,还请指出,多谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值