retain:指針拷貝,只是retainCount加一,實際上還是共用一塊內存 copy:不論拷貝的是不是集合對象,只要被拷貝的對象是不可變的,那就是指針拷貝,是淺拷貝,僅僅retainCount加一
深拷貝會分配出一塊內存,然后將引用的內容拷貝進去,也就是說拷貝出來的對象與原對象是獨立的。
copy:拷貝可變對象則是深拷貝 mutableCopy:不論被拷貝的是不是集合對象,是可變的還是不可變的,都是深拷貝 注意:如果mutableCopy的是集合對象,深拷貝的是該集合對象,不是指該集合對象里面的元素,稱之為單層深拷貝,對該集合里的元素依然是指針拷貝
總結 copy:只要copy的是不可變對象,都是淺拷貝,copy**可變集合象則是單層深拷貝,拷貝可變非集合**對象則是深拷貝 mutableCopy:拷貝集合象則是單層深拷貝,拷貝非集合對象則是深拷貝
推薦 iOS 集合的深復制與淺復制
新聞熱點
疑難解答