iOS深淺拷貝

引言

在對于自定義的對象支持copy功能鞍历,也就是我們要給自定義的對象發(fā)送copy message,那我們就要手動實現(xiàn)NSCopying協(xié)議秸滴。在項目開發(fā)中我們?nèi)绻麑δ硞€字典或者數(shù)組對象進行了一次mutbleCopy其實系統(tǒng)默認的調(diào)用了如下API:

- (id)mutableCopyWithZone:(nullable NSZone *)zone;

淺拷貝

如果你現(xiàn)在通過retain或者alloc創(chuàng)建并持有了一個對象,淺拷貝就是重新拷貝了一個指向當前這個對象的指針尘颓,此時就有兩份指針同時指向當前對象的內(nèi)存區(qū)域,即指向同一塊內(nèi)存區(qū)域,對象只有一份并沒有發(fā)生任何變化虏辫。

NSString *hdfString = @"haodf.com";
NSString *str = hdfString;
NSString *str2 = [str copy];

深拷貝

深拷貝拷貝當前指針指向的對象,系統(tǒng)會隨機給拷貝的對象重新分配一塊內(nèi)存锈拨,?深拷貝以后砌庄,兩份對象的內(nèi)存地址不一樣,指針指向也不一樣奕枢。深拷貝會把當前容器中的對象重新拷貝一份放到另一個容器中娄昆,拷貝后的指針指向新的容器。

NSString *hdfString = @"haodf.com";
NSString *str = [hdfString copy];
NSString *str2 = [str mutableCopy];

小結(jié)

1缝彬、對不可變的對象進行mutableCopy操作,是進行了一次深拷貝萌焰,返回的對象是可變的對象。

2谷浅、對不可變的對象進行copy操作扒俯,進行了一次淺拷貝族购,返回一個不可變的對象。

3陵珍、對可變得對象進行copy寝杖,進行了深拷貝,產(chǎn)生了不可變的對象副本互纯。

4瑟幕、 對可變的對象進行了一次mutableCopy,是進行了一次深拷貝留潦, 返回的對象是一個可變的對象只盹。

5、想要讓自定義的對象支持copy和mutableCopy那么就要對應(yīng)實現(xiàn)NSCopying協(xié)議兔院,和NSMutableCopying協(xié)議殖卑。

retain和copy的區(qū)別:

 1、retain是對當前對象增加了一個指針指向坊萝,使對象的引用計數(shù)器加1孵稽, 是進行了一次安全的淺拷貝操作。
 2十偶、copy是對當前對象進行了一次拷貝菩鲜,重新拷貝了當前對象,當使用的時候減少了對當前對象的依賴惦积。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末接校,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子狮崩,更是在濱河造成了極大的恐慌蛛勉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睦柴,死亡現(xiàn)場離奇詭異诽凌,居然都是意外死亡,警方通過查閱死者的電腦和手機爱只,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門皿淋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人恬试,你說我怎么就攤上這事》枋睿” “怎么了训柴?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長妇拯。 經(jīng)常有香客問我幻馁,道長洗鸵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任仗嗦,我火速辦了婚禮膘滨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘稀拐。我一直安慰自己火邓,他們只是感情好,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布德撬。 她就那樣靜靜地躺著铲咨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜓洪。 梳的紋絲不亂的頭發(fā)上纤勒,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音隆檀,去河邊找鬼摇天。 笑死,一個胖子當著我的面吹牛恐仑,可吹牛的內(nèi)容都是我干的闸翅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼菊霜,長吁一口氣:“原來是場噩夢啊……” “哼坚冀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鉴逞,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤记某,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后构捡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體液南,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年勾徽,在試婚紗的時候發(fā)現(xiàn)自己被綠了滑凉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡喘帚,死狀恐怖畅姊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吹由,我是刑警寧澤若未,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站倾鲫,受9級特大地震影響粗合,放射性物質(zhì)發(fā)生泄漏萍嬉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一隙疚、第九天 我趴在偏房一處隱蔽的房頂上張望壤追。 院中可真熱鬧,春花似錦供屉、人聲如沸行冰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽资柔。三九已至,卻和暖如春撵割,著一層夾襖步出監(jiān)牢的瞬間贿堰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工啡彬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留羹与,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓庶灿,卻偏偏與公主長得像纵搁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子往踢,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

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

  • 道歉 之前我的一篇關(guān)于深淺拷貝的文章腾誉,里面有諸多錯誤,主要是混淆了混淆copy峻呕、mutableCopy和深淺拷貝利职,...
    西木柚子閱讀 3,167評論 20 46
  • 這些天開發(fā)遇到些數(shù)據(jù)拷貝的問題,然后在深淺拷貝上?有些迷糊瘦癌,網(wǎng)上找了些資料猪贪,看了半天也不是很明白,最后決定寫代碼測...
    飛到哪閱讀 352評論 0 2
  • (本文根據(jù)CocoaChina上的一篇帖子整理讯私,后期附上鏈接)最開始热押,我們需要清楚一些關(guān)于內(nèi)存分配方式的基礎(chǔ)知識。...
    CaptainJK閱讀 212評論 0 0
  • 一斤寇、引言 我們都知道桶癣,iOS中的對象,遵守NSCopying 協(xié)議的類可以發(fā)送copy消息抡驼,遵守NSMutable...
    Cheriez閱讀 293評論 0 3
  • 1鬼廓、對象拷貝有兩種方式:淺復(fù)制和深復(fù)制。顧名思義致盟,淺復(fù)制碎税,并不拷貝對象本身,僅僅是拷貝指向?qū)ο蟮闹羔樍笪簧顝?fù)制是直接...
    滴答大閱讀 772評論 0 2