黑马程序员技术交流社区
标题:
copy问题,跪求大神解惑啊啊啊啊啊啊啊~~~
[打印本页]
作者:
大爱五花肉
时间:
2016-2-14 11:04
标题:
copy问题,跪求大神解惑啊啊啊啊啊啊啊~~~
NSMutableString *str1=[NSMutableString stringWithFormat:@"abc"];
NSString * str2=[str1 copy];
[str1 appendString:@"dd"];
NSLog(@"str1=%@,str2=%@",str1,str2);
copy不应该是一个浅拷贝,只拷贝了地址没有分配新的内存空间吗?那为什么原空间的内容变了,str2却还是没有变,那么str2访问的是哪个空间的内容呢?跪求大神解惑啊啊啊啊啊~~~
作者:
你又痴我又迷
时间:
2016-2-14 12:39
copy+mutable是深拷贝,堆区新建对象了。
作者:
李天昊
时间:
2016-2-15 18:34
只记住一点原则就OK了 :
copy的最终意义是为了改变原本或副本中的其中一个,不会影响到另一个
NSString 是一个不可变的字符串,永远不可能改变,所以用 NSString接收一个NSString的copy 完全没必要弄出一个新副本,只需要返回本身就行了
而其他情况 都应该是深拷贝,因为涉及到了可变字符串NSMutableString 他是可以变得,要想一边的值改变不影响另一边的值,那只能是两块不同的内存区域,所以都是深拷贝.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2