iOS開發(fā)之拷貝(深拷貝和淺拷貝)

對象拷貝操作也比較常見聚磺,在ObjC中有兩種方式的拷貝:copy和mutablecopy鹃栽,這兩種方式都將產(chǎn)生一個新的對象穿扳,只是后者產(chǎn)生的是一個可變對象谱姓。在ObjC中如果要想實現(xiàn)copy或者mutablecopy操作需要實現(xiàn)NSCopy或者NSMutableCopy協(xié)議借尿,拷貝操作產(chǎn)生的新的對象默認(rèn)引用計數(shù)器是1,在非ARC模式下我們應(yīng)該對這個對象進(jìn)行內(nèi)存管理屉来。在熟悉這兩種操作之前我們首先需要弄清兩個概念:深復(fù)制(或深拷貝)和淺復(fù)制(或淺拷貝)路翻。

淺復(fù)制:在執(zhí)行復(fù)制操作時,對于對象中每一層(對象中包含的對象茄靠,例如說屬性是某個對象類型)復(fù)制都是指針復(fù)制(如果從引用計數(shù)器角度出發(fā)茂契,那么每層對象的引用計數(shù)器都會加1)。

深復(fù)制:在執(zhí)行復(fù)制操作時慨绳,至少有一個對象的復(fù)制是對象內(nèi)容復(fù)制(如果從引用計數(shù)器角度出發(fā)掉冶,那么除了對象內(nèi)容復(fù)制的那個對象的引用計數(shù)器不變真竖,其他指針復(fù)制的對象其引用計數(shù)器都會加1)。

注解

對比copy和mutablecopy其實前面我們一直還用到一個操作是retain厌小,它們之間的關(guān)系如下:

retain:始終采取淺復(fù)制恢共,引用計數(shù)器會加1,返回的對象和被復(fù)制對象是同一個對象1(也就是說這個對象的引用多了一個召锈,或者說是指向這個對象的指針多了一個)旁振;

copy:對于不可變對象copy采用的是淺復(fù)制,引用計數(shù)器加1(其實這是編譯器進(jìn)行了優(yōu)化涨岁,既然原來的對象不可變拐袜,復(fù)制之后的對象也不可變那么就沒有必要再重新創(chuàng)建一個對象了);對于可變對象copy采用的是深復(fù)制梢薪,引用計數(shù)器不變(原來的對象是可變蹬铺,現(xiàn)在要產(chǎn)生一個不可變的當(dāng)然得重新產(chǎn)生一個對象);

mutablecopy:無論是可變對象還是不可變對象采取的都是深復(fù)制秉撇,引用計數(shù)器不變(如果從一個不可變對象產(chǎn)生一個可變對象自然不用說兩個對象絕對不一樣肯定是深復(fù)制甜攀;如果從一個可變對象產(chǎn)生出另一個可變對象,那么當(dāng)其中一個對象改變自然不希望另一個對象改變琐馆,當(dāng)然也是深復(fù)制)规阀。


注解
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瘦麸,隨后出現(xiàn)的幾起案子谁撼,更是在濱河造成了極大的恐慌,老刑警劉巖滋饲,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厉碟,死亡現(xiàn)場離奇詭異,居然都是意外死亡屠缭,警方通過查閱死者的電腦和手機(jī)箍鼓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呵曹,“玉大人款咖,你說我怎么就攤上這事⊙傥梗” “怎么了之剧?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長砍聊。 經(jīng)常有香客問我,道長贰军,這世上最難降的妖魔是什么玻蝌? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任蟹肘,我火速辦了婚禮,結(jié)果婚禮上俯树,老公的妹妹穿的比我還像新娘帘腹。我一直安慰自己,他們只是感情好许饿,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布阳欲。 她就那樣靜靜地躺著,像睡著了一般陋率。 火紅的嫁衣襯著肌膚如雪球化。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天瓦糟,我揣著相機(jī)與錄音筒愚,去河邊找鬼。 笑死菩浙,一個胖子當(dāng)著我的面吹牛巢掺,可吹牛的內(nèi)容都是我干的劲蜻。 我是一名探鬼主播陆淀,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼先嬉!你這毒婦竟也來了轧苫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤坝初,失蹤者是張志新(化名)和其女友劉穎浸剩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鳄袍,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绢要,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拗小。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片重罪。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哀九,靈堂內(nèi)的尸體忽然破棺而出剿配,到底是詐尸還是另有隱情,我是刑警寧澤阅束,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布呼胚,位于F島的核電站,受9級特大地震影響息裸,放射性物質(zhì)發(fā)生泄漏蝇更。R本人自食惡果不足惜沪编,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望年扩。 院中可真熱鬧蚁廓,春花似錦、人聲如沸厨幻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽况脆。三九已至饭宾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漠另,已是汗流浹背捏雌。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留笆搓,地道東北人性湿。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像满败,于是被迫代替她去往敵國和親肤频。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容