深拷贝和浅拷贝
来源:互联网 发布:单片机usb 串口 编辑:程序博客网 时间:2024/06/06 15:18
浅拷贝和深拷贝,不是copy和mutableCopy的区别,而是看是否进行内容的拷贝。
copy 浅拷贝,retain,就是对对象的拷贝,对象的内容不拷贝。
deep copy 深拷贝, 就是对对象和对象的内容的拷贝。
copy和mutableCopy
遵守NSCoping或NSMumtableCoping协议。需要实现
- (id)copyWithZone:(NSZone *)zone;
//一旦使用copy方法,就会调用这个方法
NSString, NSArray, NSDictionary, NSData对象:
1. 不可变的对象 通过 copy 不可变的
2。不可变的对象 通过 mutablecopy 可变的
3。可变的对象 通过 copy 不可变的
4。可变的对象 通过 mutablecopy 可变的
Array和Dictionary深拷贝:
- (id)initWithArray:(NSArray *)array opyItems: (BOOL)flag;- (id)initWithDictionary:(NSDictionary *)otherDictonary copyItems:(BOOL)flag;
归档的方法:(需要实现归档NSCoding)
存档和解档
- (void) encodeWithCoder: (NSCoder *)aCode;- (id) initWithCoder:(NSCoder *)aDecoder;
归档的深拷贝:
NSMutableArray *_carList = [[NSMutableArray alloc] init];//保存Array所有的内容NSData *buffer = [NSKeyedArchiver archivedDataWithRootObject: _carList];//恢复所有内容NSMutableArray *arr3 = [NSKeyedUnarchiver unarchiveObjectWithData:buffer];
ps: 如果需要对一个字段进行申请空间并赋值 可以写
self.name = [[[NSString alloc] init] autorelease];
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝 和 浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- Timer和TimerTask
- 线程池
- Android中Context详解 ---- 你所不知道的Context
- Callable和Future
- ubuntu安装配置samba服务
- 深拷贝和浅拷贝
- 锁对象Lock-同步问题更完美的处理方式
- Jdbc中的Statement 和PreparedStatement
- 华为机试题-四则运算-栈的利用
- 线段树_总结
- except in python
- Android NDK R8 环境部署
- WordPress插件机制
- 线程通信的更高效的方式