copy mutableCopy
/// https://blog.csdn.net/qq_18425655/article/details/51325921 /// 深拷贝和浅拷贝的区别。 /// 浅拷贝复制容器。 /// 深拷贝复制容器和容器内的元素。 /// 所有系统类的copy和mutableCopy都是浅拷贝。 /// 拷贝是相对于容器而言的,字符串不是容器,故不存在深浅拷贝. /// 故copy, 和 mutableCopy, 是相对于生成的新对象是否可变。 /// 通过下面输出结果可以看出 arr数组中的元素也随之改变。故容器内元素没有被拷贝。也是浅拷贝。 NSMutableArray *ar = [NSMutableArray arrayWithObjects:@1, nil]; NSMutableArray *arr = [NSMutableArray arrayWithObjects:ar, nil]; NSMutableArray *arr2 = [arr mutableCopy]; [arr2[0] addObject:@2]; NSLog(@"%@", arr[0]);
输出结果
NSMutableString *a = [[NSMutableString alloc] initWithString:@"111"]; NSMutableString *b = a; /// 生成的是不可变字符串。 NSMutableString *c = [a copy]; [a appendString:@"222"]; NSLog(@"%p %p %p", a, b, c); NSLog(@"%@ %@ %@", a, b, c);
输出结果
继承层次的关系。
http://www.cocoachina.com/ios/20171010/20716.html