介绍深拷贝和浅拷贝

  • 浅拷贝【指针复制】就是引用计数器加 1 ;【只拷贝指针,不会产生新对象;使用它复制出来的对象,其内容是不可以改变的;】

  • 深拷贝【内容复制】就是给新对象开闭内存空间;【会拷贝内容(对象)和产生新对象;会在内存中重新开辟一块区域,将对象复制一份放到这个区域。新对象是可以改变的,而且新对象的改变对源对象是没有影响的;】

  • copy 拷贝就是弄个副本出来,使得两个对象直接互不影响,完全独立

  • 如果对象可变, copy 就是深拷贝; mutable copy 都是深拷贝。对可变对象复制,都是深拷贝,但是 copy 返回的对象是不可变的(也是深拷贝)

  • 如果对象不可变, copy 就是浅拷贝; mutable copy 都是深拷贝。

  • 在非集合类对象中:对 immutable 对象进行 copy 操作,是指针复制, mutableCopy 操作时内容复制;对 mutable 对象进行 copy 和 mutableCopy 都是内容复制。

  • 在集合类对象中,对 immutable 对象进行 copy ,是指针复制, mutableCopy 是内容复制;对 mutable 对象进行 copy 和 mutableCopy 都是内容复制。但是:集合对象的内容复制仅限于对象本身,对象元素仍然是指针复制。

Last updated