什么是浅拷贝和深拷贝
浅拷贝:并不拷贝对象本身,只是对指向对象的指针进行拷贝,改变原对象的属性会影响新的对象,内存中本质上还是一个对象。
深拷贝:直接拷贝生成一个新对象,改变原对象的属性不会影响新的对象,在内存中出现了两个独立的对象本身。
1、浅拷贝Strong(指针copy)
1)相当于对指向对象的指针进行复制,产生一个新的指向对象的指针;
2)就有两个指针指向同一个对象;
3)这个对象销毁后,两个指针都应置空;
4)对象引用计数+1
2、深拷贝Copy(内容copy)
深copy不仅会复制对象本身,而且会递归复制每个指针类型的实例变量,直到两个对象没有任何公共的部分。
1)相当于对对象进行复制,产生一个新的对象;
2)就有两个指针分别指向两个对象;
3)当其中一个对象改变或者销毁后,另一个对象不受影响;
4)源对象引用计数不变,副本计数器设置为1
网友评论