A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© Simpon 中级黑马   /  2016-5-6 17:19  /  13287 人查看  /  50 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Simpon 于 2016-10-27 09:40 编辑



开篇声明应广大同学需求,在面试过程中,总有些面试官会问到深拷贝与前拷贝的区别。本文是关于iOS中深拷贝与浅拷贝的详解、区别以及部分测试代码。

首先说些概念性的东西。
什么是浅拷贝与深拷贝。
浅拷贝就是不可变对象执行不可变拷贝(copy)
深拷贝就是如果执行拷贝时 只要有可变的无论是可变对象还是可变拷贝(mutableCopy)
在简单点说
只有源对象和副本对象都不可变才是浅拷贝,其它都是深拷贝!


copy 创建的是不可变副本(NSString , NSArray, NSDictionary)
mutableCopy 创建的是可变副本 (NSMutableString, NSMutableArray, NSMutableDictionary)
shallow copy 浅拷贝(指针拷贝):相当于做了一次retain操作 引用计数器加1 没有产生新的对象  源对象和副本对象是同一个对象!
deep copy 深拷贝(内容拷贝):源对象和副本对象是两个不同的对象,源对象的计数器不变,副本对象计数器加1(产生了一个新的对象)



那么一般的面试官就会问深copy 和浅copy的区别是什么?
可参考的回答如下:



游客,如果您要查看本帖隐藏内容请回复

综上所述,希望同学们对于深拷贝与浅拷贝能有个更深的认识,不过其实当面试官问到该问题的时候,一般还会伴随着其他的问题,在他提出问题之前,莫不如主动抢占先机,提前说明,那么推荐同学们去看下


精华推荐:

50 个回复

正序浏览
Kdoat 初级黑马 2020-3-30 19:39:28
51#
谢谢分享
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
多谢分享
回复 使用道具 举报
1234567890234567890
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
重点儿得记下
回复 使用道具 举报
对于一些原理的东西确实比较难以分清
回复 使用道具 举报
心魄,路 ins 牛
回复 使用道具 举报
挺好的。。。。。     。。。
回复 使用道具 举报
学习一下
回复 使用道具 举报
sssssssssssssssssssss
回复 使用道具 举报
回复 使用道具 举报
aaasdfasdf
回复 使用道具 举报
即初中的基础,再次看一遍
回复 使用道具 举报
看起来不错啊
回复 使用道具 举报
回复 使用道具 举报
谢谢楼主分享
回复 使用道具 举报
不错不错
回复 使用道具 举报
222222了我的;不就基本没出门彩笔;
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马