對象拷貝有兩種方式:淺複製和深複製。顧名思義,淺複製,並不拷貝對象自己,僅僅是拷貝指向對象的指針;深複製是直接拷貝整個對象內存到另外一塊內存中。指針
在非集合類對象中:對immutable對象進行copy操做,是指針複製,mutableCopy操做時內容複製;對mutable對象進行copy和mutableCopy都是內容複製。對象
[immutableObject copy] // 淺複製內存
[immutableObject mutableCopy] //深複製table
[mutableObject copy] //深複製class
[mutableObject mutableCopy] //深複製im
在集合類對象中,對immutable對象進行copy,是指針複製,mutableCopy是內容複製;對mutable對象進行copy和mutableCopy都是內容複製。可是:集合對象的內容複製僅限於對象自己,對象元素仍然是指針複製。:tab
[immutableObject copy] // 淺複製集合
[immutableObject mutableCopy] //單層深複製di
[mutableObject copy] //單層深複製copy
[mutableObject mutableCopy] //單層深複製