IOS中的深拷貝與淺拷貝

2021-07-03 21:31:34 字數 485 閱讀 8700

簡單的來說就是,在有指標的情況下,淺拷貝只是增加了乙個指標指向已經存在的記憶體,而深拷貝就是增加乙個指標並且申請乙個新的記憶體,使這個增加的指標指向這個新的記憶體,採用深拷貝的情況下,釋放記憶體的時候就不會出現在淺拷貝時重複釋放同一記憶體的錯誤!

我列舉乙個例子來說吧:

你正在編寫c++程式中有時用到,操作符的過載。最能體現深層拷貝與淺層拷貝的,就是『=』的過載。

看下面乙個簡單的程式:

class string

string()

{};string & operator=(const string s)

};int main()

上面的 =過載其是就是實現了淺拷貝原因。是由於物件之中含有指標資料型別.s1,s2恰好指向同一各記憶體。所以是淺拷貝。而你如果修改一下原來的程式:

string&operator=(const string&s)

這樣你就實現了深拷貝,原因是你為被賦值物件申請了乙個新的記憶體所以就是深拷貝。

iOS深拷貝與淺拷貝

在大部分的程式語言中,都有深拷貝與淺拷貝的概念,如果使用深淺拷貝有誤,可能會造成資料安全性的問題,那麼本節針對oc中的深淺拷貝展開討論 深拷貝與淺拷貝的概念 我們在進行例項物件操作時,無非是兩種例項方式 建立新物件後將原物件的內容拷貝乙份,而後返回該物件引用 深淺拷貝的區別由此產生 以下是b物件拷貝...

IOS開發中深拷貝與淺拷貝

簡而言之 1 對不可變的非集合物件,copy是指標拷貝,mutablecopy是內容拷貝 2 對於可變的非集合物件,copy,mutablecopy都是內容拷貝 3 對不可變的陣列 字典 集合等集合類物件,copy是指標拷貝,mutablecopy是內容拷貝 4 對於可變的陣列 字典 集合等集合類物...

iOS偽拷貝, 淺拷貝, 深拷貝

先來說說偽拷貝。偽拷貝就是生成了乙個指標變數,指向了某乙個物件。接下來我們來 下淺拷貝和深拷貝。首先,從copy開始說,簡而言之,copy的目的就是生成乙個新的例項,然後把其成員都按原例項賦值。對於非指標型的成員,比如bool,int,float,這樣的賦值可以直接進行。但是對於指標型的資料,比如o...