一、深浅拷贝
浅拷贝只是将指针赋值,而深拷贝进行了内容传递,在Objective-C中,NSObject的拷贝方式有两种:copy和mutablecopy;
对于NSString,NSArray这类不可变对象:
(1)使用copy得到的结果为浅拷贝,个人理解为:由于这类对象不能更改,它们在内存中存储的形式都是一致的,因此copy操作没有必要重新分配空间来存储;
(2)使用mutablecopy得到的结果为深拷贝,以NSString为例,当发生mutablecopy,得到的返回值类型为NSMutableString,因此需要在内存中重新分配空间进行存储;
对于NSMutableString、NSMutableArray这类可变对象,使用copy或者mutablecopy,都是在进行深拷贝;
以NSDictionary为例,进行深拷贝;
NSDictionary* copyWith(NSDictionary* dic) {
NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
for (N