深浅复制
来源:互联网 发布:matlab绘制矩阵点图 编辑:程序博客网 时间:2024/05/18 00:45
前面讲了深浅复制的概念,而实操中我们会遇到更多的情况
我们可以看到这两个copyWithZone方法在ARC下已经是放弃了,这两个方法的使用非常简单,一般的格式如下:
1.实现NSCopying协议
2.实现copyWithZone方法:
3.调用:
我们看看结果:
结果非常明显了,这类似于上篇所讲的情况,所装载的容器发生了深拷贝,但是里面的内容并没有发生什么变化(指向的同一个指针,浅复制)
如果我们需要实现真正的深复制,我们就要在实现里面也要用copy或者mutaCopy
对于自定义的对象,我们如果没有实现copyWithZone方法就使用copy方法,会导致奔溃,同样道理,也要小心属性中的copy关键字,
因为这个copy关键字就是去将它调用copy方法
还有一个方法特别要小心:
- (instancetype)initWithArray:(NSArray<ObjectType> *)array copyItems:(BOOL)flag;
这个方法相当于帮你一次解决,如果设置NO,则数组“容器”是深复制,而如果设置YES,则是完完全全的深复制,容器数组本身和容器内的对象都是属于深拷贝的新对象。
如果设置YES,同样地如果你不实现copyWithZone,会奔溃。因为它原因就是用copy~
0 0
- 深浅复制
- 深浅复制
- 深浅复制
- 深浅复制
- 深浅复制
- 深浅复制
- 深浅复制
- 关于深浅复制
- java深浅拷贝(复制)
- java深浅拷贝(复制)
- c#深浅复制
- 原型模式深浅复制
- [Python] List & 深浅复制
- iOS深浅复制
- OC中的深浅复制
- oc笔记-深浅复制
- OC深浅复制问题
- java中的深浅复制
- 一点Python学习资源
- Linux之Shell学习(一)Shell简介
- Win64 驱动内核编程-24.64位驱动里内嵌汇编
- 深入浅出的javascript的正则表达式学习教程
- HDU, 2824 The Euler function
- 深浅复制
- C#关于System.Collections空间详解
- java变量和类型转换
- CRC循环冗余校验之再认识
- LVS集群调度算法
- case when then else end 的使用
- 字符串的基本操作--基于堆分配存储
- java IO流、DB数据库、Web乱码问题及解决办法总结
- C++第三次实验-数组求和