深拷贝与浅拷贝

首先通过一句话来解释:深拷贝就是内容拷贝,浅拷贝就是指针拷贝。

深拷贝就是拷贝出和原来仅仅是值一样,但是内存地址完全不一样的新的对象,创建后和原对象没有任何关系。浅拷贝就是拷贝指向原来对象的指针,使原对象的引用计数+1,可以理解为创建了一个指向原对象的新指针而已,并没有创建一个全新的对象。

(1)非容器类对象的深拷贝、浅拷贝

对于字符串这类非容器类对象,copy是浅拷贝,mutable是深拷贝。

对于MutableString,无论是copy还是mutableCopy,都会创建一个新对象,都是属于深拷贝。

对于可变对象的复制,都是深拷贝;

-- 可变对象copy后返回的对象是不可变的,mutableCopy后返回的对象是可变的。

(2)非容器类对象的深拷贝、浅拷贝

-- 容器对象和非容器对象类似,可变对象复制(copy,mutableCopy)的都是一个新对象;不可变对象copy是浅复制,mutableCopy是深复制。

-- 对于容器而言,元素对象始终是指针复制。

posted @ 2016-06-28 13:52  黑暗的咏叹  阅读(143)  评论(0编辑  收藏  举报