深拷贝和浅拷贝
来源:互联网 发布:vue.js设置button隐藏 编辑:程序博客网 时间:2024/06/06 07:28
大体来说,拷贝一个对象,实际上就是创建一个新的对象,然后用原始对象的值对其进行初始化。
拷贝一些无指针的变量,诸如布尔型、整形、浮点型等,肯定会是直接划等号,但是要拷贝指针变量,就会有两种方式了:
其一是浅拷贝,也就是拷贝指针的值,它和原始对象是指向同一块内存的,也就是说它们是共享这一块数据的;
其二就是深拷贝,它是将原始对象所指的数据复制一遍,并分配给拷贝的实例变量。
实现实例变量的set方法应该反映出所使用的拷贝方式。
如果使用的是深拷贝,那么代码如下:
-(void)setMyVariable:(id) newValue{ [myVariable autorelease]; myVariable = [newValue copy];}
如果要反映出是浅拷贝,那么就应该这样写:
-(void)setMyVariable:(id)newValue{ [myVariable aurorealease]; myVariable = [newVariable retain];}
当然,如果只是assign,实际上也应该将其理解为是一种浅拷贝,示例代码如下:
-(void) setDelegate:(id) newDelegate{ delegate = newDelegate;}
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝 和 浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- Oracle 进制转换
- C++中const用法总结
- Java集群之session共享解决方案
- linux常用命令(随时更新)
- Java内部类的使用小结
- 深拷贝和浅拷贝
- Windows下Postgres数据库自动备份
- 条件变量
- boost库安装
- 读书方法分享
- myeclipse下自建user library的方法
- warning C4996: 'strcpy' was declared deprecated
- 致我们这些浮躁的程序猿
- Android常用命令操作(继续更新)