NSString *srcStr = @"lxc";
/*
只要通过拷贝出来的对象,拷贝出来的对象中内容和以前对象中的内容一致
"一般"情况下拷贝回生成一个新的对象
为什么会产生一个新的对象:
1.修改源对象不能影响到副本对象
修改副本对象不能影响到源对象
*/
NSMutableString * copyStr = [srcStr mutableCopy];
NSLog(@"srcStr = %p copyStr = %p",srcStr,copyStr);
NSLog(@"srcStr = %@ copyStr = %@",srcStr,copyStr);
如果通过不可变对象调用了copy方法,那么不会生成一个新的对象
原因:源对象是不能修改的,拷贝出来的对象也是不能修改的
既然两个都不能修改,所以永远不能影响到另外一个对象
NSString *srcStr = @"lxc";
NSString *copyStr = [srcStr copy];
NSLog(@"srcStr = %p copyStr = %p",srcStr,copyStr);
NSLog(@"srcStr = %@ copyStr = %@",srcStr,copyStr);
正是因为调用copy方法有时候会生成一个新的对象,有时候不会生成一个新的对象
所以:如果没有生成新的对象,我们称之为浅拷贝,本质是指针拷贝
如果生成了新的对象,我们称之为深拷贝,本质是生成一个新的对象
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。