深拷贝和浅拷贝

浅拷贝和深拷贝,不是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];

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值