码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 深拷贝和浅拷贝

时间:2016-04-19 19:35:03      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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]];

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

iOS 深拷贝和浅拷贝

标签:

原文地址:http://www.cnblogs.com/RiversMa/p/5409226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!