深拷貝和淺拷貝之間有什么區別?深拷貝和淺拷貝之間有什么區別?
深拷貝和淺拷貝之間有什么區別?
慕田峪7331174
2019-05-25 16:05:55
TA貢獻1900條經驗 獲得超5個贊
淺拷貝盡可能少復制。集合的淺表副本是集合結構的副本,而不是元素。使用淺拷貝,兩個集合現在共享各個元素。
深拷貝復制一切。集合的深層副本是兩個集合,原始集合中的所有元素都是重復的。
TA貢獻1810條經驗 獲得超5個贊
廣度與深度; 根據您的對象作為根節點的引用樹來思考。
淺:
變量A和B指的是不同的存儲區域,當B被分配給A時,兩個變量指的是相同的存儲區域。以后對其中一個內容的修改會立即反映在其他內容中,因為它們共享內容。
深:
變量A和B指的是不同的存儲區,當B被分配給存儲區中的值時,A指向的值被復制到B指向的存儲區中。后來對其中任何內容的修改仍然是A或B的唯一內容; 內容不共享。
TA貢獻1804條經驗 獲得超8個贊
特別是對于iOS開發人員:
如果B
是淺拷貝的A
,那么它就像原始數據B = [A assign];
和對象它像B = [A retain]
;
B和A指向相同的內存位置
如果B
是深拷貝的A
,那么它像B = [A copy];
B和A指向不同的存儲位置
B存儲器地址與A相同
B與A的內容相同
舉報