今天算是弄明白了,之前一直懒得去研究清楚。。。。
浅拷贝:只是拷贝对象的地址,拷贝前和拷贝后的对象地址是一样的;
深拷贝:拷贝了对象的内容,相当于新开辟了一片内存。拷贝前和拷贝后的对象地址是不一样的,相当于做了备份;
下面这段代码:
NSString *test =@"123";
NSString *test1 = [test copy];
NSString *test2 = [test mutableCopy];
对于上面三行代码来说,都是"不可变"对象(NSString)。使用copy出来的是浅拷贝,使用mutableCopy出来的是深拷贝。
NSMutableString *mtest = [[NSMutableString alloc] initWithString:@"334"];
NSMutableString *mtest1 = [mtest copy];
NSMutableString *mtest2 = [mtest mutableCopy];
对于上面三行代码来说,都是"可变"对象(NSMutableString)。使用copy或mutableCopy出来的都是深拷贝。
总结,无论是方法名(mutableCopy),还是类名(NSMutableString),凡是带有Mutable字样的都是深拷贝。