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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Simpon 中级黑马   /  2016-5-6 17:19  /  10712 人查看  /  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 个回复

倒序浏览
受教了
个人认为:区别就是浅拷贝是指针拷贝,深拷贝是内容拷贝,也就是新创建了一个对象
回复 使用道具 举报
楼主强强强
回复 使用道具 举报
我来看看
回复 使用道具 举报
回复看看
回复 使用道具 举报
enen学习
回复 使用道具 举报
看看 学习
回复 使用道具 举报
真厉害!!!!!!
回复 使用道具 举报
戳开看看
回复 使用道具 举报
xiexiefenxiang
回复 使用道具 举报
看看 学习
回复 使用道具 举报
TaoT 中级黑马 2016-7-18 23:12:54
12#
认为亲人任务而威尔额外热热污染
回复 使用道具 举报
6666666666666
回复 使用道具 举报
希望学到东西,看看。
回复 使用道具 举报
119 中级黑马 2016-7-28 21:18:39
15#
111十个字我要是各自
回复 使用道具 举报
麻辣琛子 来自手机 初级黑马 2016-8-11 21:51:37
16#
感谢分享
回复 使用道具 举报
不错不错
回复 使用道具 举报
这个应该是难点 先记下
回复 使用道具 举报
IOS 深拷贝和浅拷贝的详解
xuexile
回复 使用道具 举报
wmymz 初级黑马 2016-10-24 16:24:23
20#
谢谢分享
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马