本文共 1262 字,大约阅读时间需要 4 分钟。
//// main.m// DeepCopyDemo//// Created by 千雅爸爸 on 16/10/6.// Copyright © 2016年 kodulf. All rights reserved.//#importint main(int argc, const char * argv[]) { @autoreleasepool { //浅拷贝是地址拷贝, //深拷贝是对象拷贝,是一个新的对象,新的地址 //copy(可以是浅拷贝,也可以是深拷贝) mutablecopy(一定是深拷贝) //注意copy方法,如果用来拷贝可变的对象,那么就是浅拷贝,如果copy的是可变的对象,那么就是深拷贝。要记住一点copy 饭回来的对象一定是不可变的 //mutablecopy,可变拷贝,无论我们使用mutablecopy 这个方法去操作的对象是可变的还是不可变的,最后都会进行深拷贝,而且拷贝出来的空间一定是可变的。 NSString *string = @"string";//不可变的字符串 NSLog(@"%p",string); //当copy 拷贝是是一个不可变的字符串的时候,是浅拷贝 NSString *string2 =[string copy]; NSLog(@"%p",string2); //当copy 拷贝是一个可变的字符串的时候,是深拷贝 NSMutableString *mstring = [[NSMutableString alloc] initWithFormat:@"hello"]; NSString *string3= [mstring copy]; NSLog(@"%p",mstring); NSLog(@"%p",string3); //mutablecopy,可变拷贝,无论我们使用mutablecopy 这个方法去操作的对象是可变的还是不可变的,最后都会进行深拷贝,而且拷贝出来的空间一定是可变的。 NSMutableString *string4 = [string mutableCopy]; NSLog(@"%p",string); NSLog(@"%p",string4); NSMutableString *string5 = [mstring mutableCopy]; NSLog(@"%p",string); NSLog(@"%p",string5); } return 0;}