深拷贝,浅拷贝
来源:互联网 发布:淘宝怎样粘贴 编辑:程序博客网 时间:2024/05/22 02:21
浅 复 制
:在复制操作时,对于被复制的对象的每一层复制都是指针复制, 内存并没有开辟新的空间, 使用浅拷贝会使原对象RefrenceCount加1。
深 复 制
:在复制操作时,将对象完整的复制一份放到一个新的内存空间, 原对象的RC不会加1, 新对象的RC加1。
完全复制
:在复制操作时,对于被复制的对象的每一层复制都是对象复制。
retain
:始终是浅复制。引用计数每次加一。返回对象是否可变与被复制的对象保持一致。 copy
:对于可变对象为深复制,引用计数不改变;
对于不可变对象是浅复制,引用计数每次加一。始终返回一个不可变对象。 mutableCopy
:始终是深复制,引用计数不改变。始终返回一个可变对象。
不可变对象
:值发生改变,其内存首地址随之改变。
可变对象
:无论值是否改变,其内存首地址都不随之改变。
引用计数
:为了让使用者清楚的知道,该对象有多少个拥有者(即有多少个指针指向同一内存地址)。
1. 向一个可变对象copy和mutableCopy, 永远都是深copy2. 向一个不可变对象使用copy是浅拷贝, mutableCopy是深copy
- 问 :什么时候用到深浅拷贝?
答:深拷贝是在要将一个对象从可变(不可变)转为不可变(可变)或者将一个对象内容克隆一份时用到;
浅拷贝是在要复制一个对象的指针时用到。
0 0
- 深拷贝&&浅拷贝
- 深拷贝||浅拷贝
- 浅拷贝,深拷贝
- 浅拷贝,深拷贝
- 深拷贝,浅拷贝
- 浅拷贝 深拷贝
- 浅拷贝.深拷贝
- 浅拷贝 深拷贝
- 深拷贝,浅拷贝
- 深拷贝、浅拷贝
- 深拷贝、浅拷贝
- 深拷贝+浅拷贝
- 深拷贝 浅拷贝
- 浅拷贝、深拷贝
- 浅拷贝、深拷贝
- 深拷贝、浅拷贝
- 深拷贝,浅拷贝
- 深拷贝、浅拷贝
- C语言基础
- codeforces 150C Smart Cheater 线段树区间合并
- struts2中改变struts.xml默认路径
- yaf的nginx的rewrite
- 更快学习JavaScript的6个思维技巧
- 深拷贝,浅拷贝
- XCode7.0 Objective-C 三大新特性
- struts中接收数组的表单和ajax两种形式
- 卷积神经网络(一):LeNet5的基本结构
- [LeeCode]#22 Generate Parentheses
- 点云视窗类CloudViewer
- 推荐:5款可以教你编程的游戏
- eclipse远程调试linux下tomcat
- 安装MySQL后没有服务,点击Command line client闪退现象