博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS 深拷贝和浅拷贝应用
阅读量:4699 次
发布时间:2019-06-09

本文共 1146 字,大约阅读时间需要 3 分钟。

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

深层复制:复制引用对象本身。

意思就是说我有个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

你可能感兴趣的文章
JAVA必备——13个核心规范
查看>>
172. Factorial Trailing Zeroes
查看>>
Java语言程序设计(基础篇) 第十一章 继承和多态
查看>>
优秀程序员 分析提高能力 程序进阶
查看>>
javascript 获取图片原始尺寸
查看>>
关于JS中apply和call详细解答
查看>>
喜大普奔!Django官方文档终于出中文版了
查看>>
linux下导入、导出mysql数据库命令
查看>>
欧美很好听的调调
查看>>
c# 通用类扩展方法 备注
查看>>
POJ 3422 Kaka's Matrix Travels
查看>>
Testng 运行Cannot find class in classpath
查看>>
Linux2.6信号管理
查看>>
ASP.NET MVC 使用 Log4net 记录日志
查看>>
个人永久性免费-Excel催化剂插件功能修复与更新汇总篇之七
查看>>
Jquery调用C#后台方法
查看>>
TensorFlow中数据读取—如何载入样本
查看>>
php课程 10-35 php实现文件上传的注意事项是什么
查看>>
使用Python+md5删除本地重复(同一张不重名)的照片
查看>>
JAVA-java内存分配
查看>>