标签:
一、深浅拷贝总的来说有两大类:集合类和非集合类
概念:指针复制俗称指针拷贝,对象复制也俗称内容拷贝;
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]];
标签:
原文地址:http://www.cnblogs.com/RiversMa/p/5409226.html