Copy和MUTableCopy
来源:互联网 发布:java怎么创建数组 编辑:程序博客网 时间:2024/06/16 08:58
Copy和MUTableCopy
在这之前先了解几个基本概念:
浅复制:指针复制(所谓指针复制,指两个指针指向同一块内存),并没有进行对象复制
单层深复制:对于集合类所说的,指的是只复制了该集合类的最外层,里面的元素没有复制(即两个集合类的地址不一样,但是两个集合里所存储的元素的地址是一样的)
完全复制:指的是完全复制整个集合类,也就是说两个集合地址不一样,里面所存储的元素地址也不一样
非集合类(NSString之类)[immutableObject copy] //浅复制 [immutableObject mutableCopy] //深复制[mutableObject copy] //深复制[mutableObject mutableCopy] //深复制结论:不可变进行copy是浅复制,mutableCopy是深复制。可变:copy和mutableCopy都是深复制
集合类(NSArray之类)[immutableObject copy] //浅复制[immutableObject mutableCopy] //单层深复制[mutableObject copy] //单层深复制[mutableObject mutableCopy] //单层深复制结论:不可变copy是浅复制,mutableCopy是单层深复制。可变:copy和mutableCopy都是单层深复制
那么,如何实现多层深复制呢?NSArray *copyArray = [[NSArray alloc] initWithArray:array copyItems:YES]; // 完全复制
需要注意的是:以上所说的两种情况默认都实现了NSCopying和NSMutableCopying协议,对于自定义继承NSObject的类,需要实现以下方法,否则copy会导致crash copy需要实现NSCopying协议,然后实现以下方法,否则copy会crash-(id)copyWithZone:(NSZone *)zone { · CopyObject *copy = [[[self class] alloc] init]; · copy.name = self.name; · copy.mobile = self.mobile; · copy.company = self.company; · copy.descInfo = self.descInfo; · return copy; · } mutableCopy时,需要实现NSMutableCopying协议,否则mutableCopy会crash-(id)mutableCopyWithZone:(NSZone *)zone { · MutableCopyObject *mutableCopy = [[[self class] alloc] init]; · mutableCopy.name = self.name; · mutableCopy.mobile = self.mobile; · mutableCopy.company = self.company; · mutableCopy.descInfo = self.descInfo; · return mutableCopy; · }
阅读全文
0 0
- copy和mutableCopy
- iphone copy 和mutablecopy
- copy和mutablecopy浅见
- copy和mutablecopy
- copy和mutablecopy
- copy和mutablecopy
- copy和mutableCopy
- Copy和MutableCopy
- copy和mutableCopy
- copy和mutableCopy
- copy和MutableCopy
- copy和mutableCopy
- copy和mutableCopy
- Copy和MutableCopy
- copy和mutableCopy,retain
- copy 和 mutableCopy
- copy和mutablecopy
- Copy和MutableCopy
- 为什么IP层要分片而TCP层要分段? 这些和MTU/MSS又有什么关系?------tcpdump抓包实战搞起!
- hibernate_Restrictions
- eclipse下gradle构建 springMVC+spring+HibernateJPA+mysql
- 智慧楼宇篇 6 —— 室内定位技术(五)
- Adoby photoshop cs5永久序列号
- Copy和MUTableCopy
- CDOJ-1591(2017 UESTC Training for Graph Theory -A)
- Java中的String
- 将博客搬至CSDN
- Java中的异常机制
- 求组合数-费马小定理
- not in在结果集有null值的时候失效
- Winform用string类型的属性来绑定CheckBox
- json数组和json对象的包含关系