深拷贝与浅拷贝
来源:互联网 发布:58端口多少钱一个月 编辑:程序博客网 时间:2024/06/11 11:12
1.深拷贝与浅拷贝
深拷贝与浅拷贝的区别:
浅拷贝指的是指针,相当于对对象的指针拷贝,这个指针存有这个对象的内存地址,所以就是一个对象有两个指针,那么他的引用计数是2,如果销毁这个对象,那么必须对这两个指针进行置空,要不就成为了野指针了。
深拷贝指的是对象,相当于对对象进行复制一个新的内存地址,并有个新指针指向这块新内存地址。所以说内存中会存在两块大小相同的内存,存放相同的对象,但是地址不同。如果新拷贝的对象被释放,那么对旧对象没任何影响。
要自定义一下copy 需要遵循NSCopying协议,实现- (id)copyWithZone:(NSZone *)zone 方法而发送copy消息,要实现mutableCopy 则需要遵循NSMutableCopying协议,实现- (id)mutableCopyWithZone:(NSZone *)zone 方法而发送mutableCopy消息,如果发送了一个没有遵守上诉两协议而发送 copy或者 mutableCopy,那么就会发生异常。,一般属性property的修饰符copy代替的就是就是前者,在进行赋值操作的时候实际上就是调用这个- (id)copyWithZone:(NSZone *)zone 方法。
那么还有对一个是否可变的对象进行copy、mutableCopy。
那么结论就是:如果对于一个不可变对象的话,copy是浅拷贝,mutableCopy是深拷贝。
如果对于一个可变对象的话,两者都是深拷贝。
0 0
- 深拷贝与浅拷贝
- 深拷贝与浅拷贝
- 深拷贝与浅拷贝
- “浅拷贝”与“深拷贝”
- 深拷贝与浅拷贝
- 深拷贝与浅拷贝
- 深拷贝与浅拷贝
- 浅拷贝与深拷贝
- 深拷贝与浅拷贝
- 深拷贝与浅拷贝
- “浅拷贝”与“深拷贝”
- 深拷贝与浅拷贝
- 浅拷贝与深拷贝
- 深拷贝与浅拷贝
- 浅拷贝与深拷贝
- 深拷贝与浅拷贝
- 深拷贝与浅拷贝
- 深拷贝与浅拷贝
- Android基础——TabHost使用(自定义按钮菜单)
- Reverse Bits-位反转
- 数论 随记
- 配分函数
- 【tyvj 1860】 后缀数组模板
- 深拷贝与浅拷贝
- LAMPSecurity渗透演练
- Python字符串操作
- leetcode171.[math] Excel Sheet Column Number
- Hdu 5016 Baby Ming and Matrix games【dfs】
- 1002. A+B for Polynomials (25)
- 创建型模式 --- 建造者模式(Builder)
- 【bzoj3997】[TJOI2015]组合数学 dp
- 292Nim Game