1.淺拷貝就是拷貝后,并沒有進行真正的復制,而是復制的對象和原對象都指向同一個地址
2.深拷貝是真正的復制了一份,復制的對象指向了新的地址
一:
對于非容器不可變對象的copy為淺拷貝,mutableCopy為深拷貝
淺拷貝獲得的對象地址和原對象地址一致, 返回的對象為不可變對象
深拷貝返回新的內(nèi)存地址,返回對象為可變對象
二:
對于非容器可變對象的copy為深拷貝
mutableCopy為深拷貝
并且copy和mutableCopy返回對象都為可變對象
三:
容器類可變對象mutableCopy和copy都返回一個新的容器,但容器內(nèi)的元素仍然是淺拷貝
想要整個容器都深拷貝就要用到使用 initWithArray:copyItems:方法,將第二個參數(shù)設(shè)置為 YES
總結(jié):
copy: 對于可變對象為深拷貝,對于不可變對象為淺拷貝
mutableCopy:始終是深拷貝