浅层复制:只复制指向对象的指针,而不复制引用对象本身。
深层复制:复制引用对象本身。

意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源还是只有一份,

那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一个思想。深复制就好理解了,内存中存在了两份独立对象本身。

用网上一哥们通俗的话将就是:

浅复制好比你和你的影子,你完蛋,你的影子也完蛋

深复制好比你和你的克隆人,你完蛋,你的克隆人还活着。

     NSMutableArray *newArr = [[NSMutableArray alloc]init];NSMutableArray *oldArr = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3", nil];newArr = [oldArr mutableCopy];[oldArr addObject:@"4"];NSLog(@"%@",oldArr);NSLog(@"%@",newArr);NSMutableArray *newArray = [[NSMutableArray alloc]init];NSMutableArray *oldArray = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d",@"e", nil];newArray = (NSMutableArray*)(CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (CFPropertyListRef)oldArray, kCFPropertyListImmutable));[oldArray addObject:@"f"];NSLog(@"oldArray retainCount is %d",(int)[oldArray retainCount]);NSLog(@"oldArray %@",oldArray);NSLog(@"newArray %@",newArray);[newArray release];

  

转载于:https://www.cnblogs.com/joesen/archive/2013/04/01/2993438.html

IOS 深拷贝和浅拷贝应用相关推荐

  1. iOS 深拷贝和浅拷贝

    注意,本文只说结论不说过程 1. 对于系统的非容器类对象,我们可以认为,如果对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝).如果是对可变对象复制,都是深 ...

  2. iOS 深拷贝、浅拷贝、自定义对象拷贝简介

    copy语法的目的:改变副本的时候,不会影响到源对象: 深拷贝:内容拷贝,会产生新的对象.新对象计数器置为1,源对象计数器不变. 浅拷贝:指针拷贝,不会产生新的对象.源对象计数器+1. 拷贝有下面两个 ...

  3. (0056)iOS开发之深拷贝与浅拷贝

    参考: http://blog.csdn.net/qq_17007915/article/details/50503043 http://www.cnblogs.com/ludashi/p/38941 ...

  4. 深拷贝与浅拷贝(mutableCopy与Copy)详解 iOS

    深拷贝与浅拷贝(mutableCopy与Copy)详解 iOS ios中并不是所有的对象都支持copy,mutableCopy,遵守NSCopying 协议的类可以发送copy消息,遵守NSMutab ...

  5. iOS开发——深拷贝与浅拷贝详解

    深拷贝和浅拷贝这个问题在面试中常常被问到,而在实际开发中,只要稍有不慎,就会在这里出现问题.尤其对于初学者来说,我们有必要来好好研究下这个概念.我会以实际代码来演示,相关示例代码上传至 这里 . 首先 ...

  6. Python 精选笔试面试习题—类继承、方法对象、包管理、闭包、可变类型作为默认参数、列表引用、sort与sorted、 append 和 extend、深拷贝和浅拷贝

    1. 类继承 如下代码 class A(object):def show(self):print 'This is calss A'class B(A):def show(self):print 'T ...

  7. C++深拷贝与浅拷贝

    浅拷贝就是成员数据之间的一一赋值:把值赋给一一赋给要拷贝的值.但是可能会有这样的情况:对象还包含资源,这里的资源可以值堆资源,或者一个文件..当 值拷贝的时候,两个对象就有用共同的资源,同时对资源可以 ...

  8. python的深拷贝与浅拷贝

    对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量. 并不是复制⼀份内容. 两个变量的内容其实为一个地址,如果要在复制的同时分配新的地址则需要用到深拷贝和浅拷贝的命令 ls ...

  9. 详谈Javascript中的深拷贝和浅拷贝

    数据复制是我们编程中经常会使用到的技术,对于普通数值数据来说,复制很简单,但是对于复杂类型比如对象的复制,就会有很多需要考虑的东西,比如我们经常说到的深拷贝和浅拷贝. 浅拷贝 复制的对象和原始对象属性 ...

最新文章

  1. 踏上《软件设计精要与模式》第二版的征途
  2. DeepMatching文献总结:图像拼接、图像匹配、图像检索
  3. China .NET Conf 2019-.NET技术架构下的混沌工程实践
  4. CentOS统的7个运行级别的含义
  5. springmvc如何使用视图解析器_SpringMVC相关面试题
  6. 前后端分离的用户验证原理及Spring Boot + JWT的框架搭建(附完整的框架代码)之一
  7. mysql 设置男女约束
  8. 2022,火山引擎的云上第一“子”,为何是视频?
  9. Clojure 的身份与状态思想
  10. 洛谷——P1568 赛跑
  11. java 多站点_Java 并发编程整体介绍 | 内含超多干货
  12. arcgis python 百度网盘 视频_arcgis软件零基础入门视频教程27讲百度网盘链接
  13. 微信小程序ui框架 graceUI 使用半年评测
  14. php7.2 eregi,php – 函数eregi()已弃用
  15. 千兆宽带网接入电脑电脑却只有百兆
  16. 微软计算机电源怎么接,电源线,详细教您电脑电源线怎么接
  17. uc浏览器的navigator.userAgent
  18. PS 滤镜算法原理——浮雕效果
  19. 如何把多张图片合成视频
  20. 【重要】一部手机失窃而揭露的黑色产业链—完整修订版

热门文章

  1. python运行出现SyntaxError: 'return' outside function的原因和解决办法
  2. java 时间转为毫秒数_疫情期间面试总结一(java基础方面)
  3. oir 用image j打开的插件_Windows 上使用 VSCode Remote 插件进行远程开发
  4. android改包名
  5. Python扑克牌发牌
  6. 微服务链路追踪_.NET Core微服务:分布式链路追踪系统分享
  7. python调整图像大小_使用Python调整图像大小
  8. Linux Python 安装第三方库时报错 package wheel is not installed
  9. 05NumPy--5.4随机数
  10. 湖南省区块链协会成立