浅拷贝:浅拷贝并不拷贝对象本身,只是对指向对象的指针进行拷贝
深拷贝:直接拷贝对象到内存中一块区域,然后把新对象的指针指向这块内存

在iOS中并不是所有对象都支持Copy和MutableCopy,遵循NSCopying协议的类可以发送Copy协议,遵循NSMutableCopying协议的类可以发送MutableCopy消息。如果一个对象没有遵循这两个协议而发送Copy或者MutableCopy消息那么会发生异常。如果要遵循NSCopying协议,那么必须实现copyWithZone方法。如果要遵循NSMutableCopying协议那么必须实现mutableCopyWithZone方法

1.非容器对象(NSString)

不可变对象调用Copy方法其实只是把当前对象的指针指向了原对象的地址,而调用mutableCopy方法则是新分配了一块内存区域并把新对象的指针指向了这块区域。
可变对象来说调用Copy和MutableCopy方法都会重新分配一块内存。但是copy和mutableCopy的区别在于copy在复制对象的时候其实是返回了一个不可变对象,因此当调用方法改变对象的时候会崩溃
2.容器类对象(NSArray)
容器对象本身和非容器对象是同样的效果,但是容器里的元素还是指针复制。

最新文章

  1. Unity3D 更新文件下载器
  2. 部分MP4在谷歌浏览器上无法播放
  3. 亚马逊云服务器AWS安装CentOS
  4. h5 input file ajax实现文件上传
  5. SharePoint 学习记事(一)
  6. java多线程总结四:volatile、synchronized示例
  7. 【转】SQL2008清除日志
  8. go网络编程示例,客户端,服务器端
  9. PHP删除Solr文档
  10. CSS3 动画触发事件
  11. MyEclipseアンロックの手順
  12. Jquery EasyUI Base基础
  13. MySQL Innodb如何找出阻塞事务源头SQL
  14. idea怎么创建properties文件
  15. 编译原理子cygwin的使用
  16. vue-router-5-命名路由
  17. avalon2学习教程 03数据填充
  18. 使用cgroup进行系统资源使用限制
  19. tushare使用
  20. Unity-反编译由IL生成的DLL文件

热门文章

  1. git commit 新修改的内容 添加到上次提交中 减少提交的日志
  2. vue实现点击图标,图标在2s中完成旋转
  3. 微信小程序picker重写,精确到时分秒
  4. Jquery调用ajax,出现一直跳转到error问题
  5. [C0] 人工智能大师访谈 by 吴恩达
  6. 2019 SDN上机第二次作业
  7. MNIST-神经网络的经典实践
  8. 重构 改善既有代码的设计 (Martin Fowler 著)
  9. IOI游记
  10. SpringBoot启用https