iOS之拷贝
来源:互联网 发布:网络技术部工作流程 编辑:程序博客网 时间:2024/05/16 06:17
对象拷贝
- 浅拷贝和深拷贝
- 深浅拷贝便于理解的定义,如下:
- 深浅拷贝便于理解的定义,如下:
- 浅拷贝:在拷贝操作时,对于被拷贝的对象的每一层拷贝都是指针拷贝。
- 深拷贝:在拷贝操作时,对于被拷贝的对象至少有一层拷贝是深拷贝。
- 完全拷贝:在拷贝操作时,对于被拷贝的对象的每一层拷贝都是对象拷贝。
注:
- 所谓的层次划分是指数组对象本身和数组内对象的层次。
- 在拷贝操作时,对于对象有n层时对象拷贝,我们可称作n级深拷贝,此处n应大于等于1.
- 对于完全拷贝目前通用办法是:迭代法和归档
- 指针拷贝俗称指针拷贝,对象拷贝也俗称内容拷贝。
- 一般来讲: 浅层拷贝:拷贝引用对象的指针;深层拷贝:拷贝引用对象内容。
想要实现对象拷贝,要向被拷贝的对象发送retain、copy、mutableCopy消息。2.结论
retain:始终是浅拷贝。引用计数每次加1。返回对象是否可变与被拷贝的对象保持一致。copy:对于可变对象为深拷贝,引用计数不改变;对于不可变对象是浅拷贝,引用计数每次加1。始终返回一个不可变对象。mutableCopy:始终是深拷贝,引用计数不改变。始终返回一个可变对象。3.使用场景
深拷贝是在要将一个对象从可变(不可变)转为不可变(可变)或者将一个对象内容克隆一份时用到。浅拷贝是在要拷贝一个对象的指针时用到。
2.在程序中实现对象拷贝
OC中并不是所有的类都支持拷贝,只有遵循NSCopying协议的类,才支持copy拷贝;只有遵循NSMutableCopying协议的类,才支持mutableCopy拷贝。如果没有遵循上述两种协议的类,运用拷贝会发出异常。如果是自定义的类,那么我们需要注销NSCopying、NSMutableCopying协议,然后重写 - (id)copyWithZone:(NSZone *)zone 和 - (id)mutableCopyWithZone:(NSZone *)zone这两个方法,这样就能调用copy和mutableCopy了。
阅读全文
0 0
- ios之深拷贝
- ios 之对象 拷贝
- ios之深拷贝
- iOS之拷贝
- [IOS 开发] 深拷贝之完全拷贝
- ios之数据库的拷贝
- IOS学习之深浅拷贝
- iOS基础之----深浅拷贝
- iOS开发之深浅拷贝
- ios开发之浅拷贝与深拷贝
- IOS开发之深拷贝与浅拷贝(mutableC…
- IOS开发之深拷贝、浅拷贝、mutableCopy、Copy详解
- IOS/MAC 开发之深拷贝与浅拷贝
- iOS巅峰之深拷贝和浅拷贝区别
- (0056)iOS开发之深拷贝与浅拷贝
- iOS软件开发 内存管理之拷贝
- IOS-UI高级之深浅拷贝
- iOS strong、copy关键字之深浅拷贝
- 请假功能中计算有效工作日
- Android 基本动画详解
- File 重命名和删除功能
- 文章标题
- [附中OJ 1772] 0/1背包问题之2
- iOS之拷贝
- JFrame在桌面居中显示
- 搭建 maven 分布式开发项目的步骤
- PE结构->【资源表】Resources Table
- 从一组数据中找出最长的连续子串(以一副扑克牌手牌为例)
- 326. Power of Three
- apache ant的使用与介绍
- File类的判断功能
- 那些seo技巧会导致网站排名下降?