iOS 深拷贝和浅拷贝

一、深浅拷贝总的来说有两大类:集合类和非集合类

概念:指针复制俗称指针拷贝,对象复制也俗称内容拷贝;

1、非集合类深浅拷贝如:NSString、NSNumber等;

以下打印为地址结果:

很显然看出stringH和stringW地址一样,而stringQ地址不一样,说明stringW完成的是浅拷贝(指针拷贝),而stringQ是深拷贝(内容拷贝);

再如:

以下打印为地址结果:

四个地址全不一样;并且只要是copy,就不能给修改;地址不一样说明完成的都是深拷贝(内容拷贝);

2、集合类的深浅拷贝:如NSArray,NSDictionary等;

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Collections/Articles/Copying.html

集合类的拷贝和非集合的惊人的相似,只是有一点不太一样;其实这里所谓的深拷贝还是有点争议,不过足够我们用了,要想真正意义上实现深拷贝还是要用到苹果官方API提到的方法:

NSArray *deepCopyArray=[[NSArray alloc] initWithArray:someArray copyItems:YES];

或者归档:

NSArray* trueDeepCopyArray = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:oldArray]];

编译器一直出问题,崩溃了都,先写到这,水平有限难免有纰漏,欢迎指正!
 

转载于:https://www.cnblogs.com/RiversMa/p/5409226.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值