什么是深拷贝和浅拷贝
-
深复制:直接拷贝生成一个新对象,改变原对象的属性不会影响新的对象,在内存中出现了两个独立的对象本身。
-
浅拷贝:并不拷贝对象本身,只是对指向对象的指针进行拷贝,改变原对象的属性会影响新的对象,内存中本质上还是一个对象。
非容器类的深拷贝和浅拷贝
- 不可变对象的拷贝
//[str1 mutableCopy];生成的是一个可变对象
//因为都是不可变字符串,创建方式并不影响拷贝方式。
NSString *str1 = @"这是string";
NSString *str2 = [str1 copy];
NSString *str3 = [str1 mutableCopy];
NSMutableString *str4 = [str1 copy];
NSMutableString *str5 = [str1 mutableCopy];
NSLog(@"str1 = %p str2 = %p",str1,str2);
NSLog(@"str1 = %p str3 = %p",str1,str3);
NSLog(@"str1 = %p str4 = %p",str1,str4);
NSLog(@"str1 = %p str5 = %p"