iOS 深拷貝及淺拷貝的區(qū)別

一撒璧、淺拷貝及深拷貝

1、淺拷貝(指針copy)

1)相當(dāng)于對(duì)指向?qū)ο蟮闹羔樳M(jìn)行復(fù)制及刻,產(chǎn)生一個(gè)新的指向?qū)ο蟮闹羔槪?/p>

2)就有兩個(gè)指針指向同一個(gè)對(duì)象镀裤;

3)這個(gè)對(duì)象銷毀后,兩個(gè)指針都應(yīng)置空;

4)對(duì)象引用計(jì)數(shù)+1

2缴饭、深拷貝(內(nèi)容copy)

深copy不僅會(huì)復(fù)制對(duì)象本身暑劝,而且會(huì)遞歸復(fù)制每個(gè)指針類型的實(shí)例變量,直到兩個(gè)對(duì)象沒有任何公共的部分颗搂。

1)相當(dāng)于對(duì)對(duì)象進(jìn)行復(fù)制担猛,產(chǎn)生一個(gè)新的對(duì)象;

2)就有兩個(gè)指針分別指向兩個(gè)對(duì)象;

3)當(dāng)其中一個(gè)對(duì)象改變或者銷毀后傅联,另一個(gè)對(duì)象不受影響先改;

4)源對(duì)象引用計(jì)數(shù)不變,副本計(jì)數(shù)器設(shè)置為1


二蒸走、copy及mutableCopy

? ? NSObject類提供了copy和mutableCopy方法仇奶,通過這兩個(gè)方法即可復(fù)制已有對(duì)象的副本

? ? ?NSString,NSMUtablestring等系統(tǒng)類默認(rèn)遵守NSCoppying及NSMUtableCoppying協(xié)議比驻。

? ? ?只有不可變對(duì)象創(chuàng)建的不可變副本(copy)才是淺copy,其它都是深copy该溯。

1、copy方法

1)只要調(diào)用copy方法别惦,總是返回對(duì)象的不可修改的副本狈茉。即便該對(duì)象本身是可修改的

2)eg: 調(diào)用NSMUtableString的copy方法,將返回不可修改的字符串對(duì)象掸掸。

2氯庆、mutableCopy方法

1)只要調(diào)用mutableCopy方法,總是返回對(duì)象的可變副本猾漫。即便該對(duì)象本身是不可修改的点晴。

2)eg: 調(diào)用NSString的mutableCopy方法,總是返回對(duì)象的可修改的字符串對(duì)象悯周。

3、示例代碼

4陪竿、系統(tǒng)對(duì)象總結(jié)

1禽翼、對(duì)于系統(tǒng)的非容器類對(duì)象(eg:NSString,NSMUtableString)

如果對(duì)[不可變]對(duì)象復(fù)制,copy是指針復(fù)制(淺拷貝), mutableCopy就是對(duì)象復(fù)制(深拷貝)族跛。

如果是對(duì)可變對(duì)象復(fù)制闰挡,都是深拷貝,但是copy返回的對(duì)象是不可變的礁哄。

2长酗、對(duì)于系統(tǒng)的容器類對(duì)象(eg:NSArray ,NSDictionary)

對(duì)于容器類本身,上面討論的結(jié)論也是適用的,只不過是容器對(duì)象中的元素是是淺copy桐绒。

5夺脾、自定義類調(diào)用copy與mutableCopy復(fù)制對(duì)象的副本

聲明協(xié)議
重寫方法
調(diào)用

6、setter方法的copy選項(xiàng)

1)copy指示符就是指定當(dāng)前程序調(diào)用setter方法復(fù)制時(shí)茉继,實(shí)際上是將傳入?yún)?shù)的副本賦值給程序的實(shí)例變量咧叭。(通過點(diǎn)語(yǔ)法賦值時(shí),實(shí)際上調(diào)用的就是setter方法)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末烁竭,一起剝皮案震驚了整個(gè)濱河市菲茬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖婉弹,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睬魂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡镀赌,警方通過查閱死者的電腦和手機(jī)汉买,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佩脊,“玉大人蛙粘,你說我怎么就攤上這事⊥茫” “怎么了出牧?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)歇盼。 經(jīng)常有香客問我舔痕,道長(zhǎng),這世上最難降的妖魔是什么豹缀? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任伯复,我火速辦了婚禮,結(jié)果婚禮上邢笙,老公的妹妹穿的比我還像新娘啸如。我一直安慰自己,他們只是感情好氮惯,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布叮雳。 她就那樣靜靜地躺著,像睡著了一般妇汗。 火紅的嫁衣襯著肌膚如雪帘不。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天杨箭,我揣著相機(jī)與錄音寞焙,去河邊找鬼。 笑死互婿,一個(gè)胖子當(dāng)著我的面吹牛捣郊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播擒悬,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼模她,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了懂牧?” 一聲冷哼從身側(cè)響起侈净,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤尊勿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后畜侦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體元扔,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年旋膳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了澎语。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡验懊,死狀恐怖擅羞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情义图,我是刑警寧澤减俏,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站碱工,受9級(jí)特大地震影響娃承,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怕篷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一历筝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧廊谓,春花似錦梳猪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至电抚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間竖共,已是汗流浹背蝙叛。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留公给,地道東北人借帘。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像淌铐,于是被迫代替她去往敵國(guó)和親肺然。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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