iOS 淺談Strong叹哭、Copy 和 mutableCopy

????在iOS的王國里忍宋,Strong、Copy和mutableCopy在我們的使用過程中风罩,缺一不可的糠排。接下來來介紹一下它們之間的關(guān)系和注意點(diǎn)。

一超升、Copy和mutableCopy之拷貝

????在生活中入宦,時常會用到一個詞“拷貝”哺徊。例如:微信群里、朋友圈很多人會分享同一篇的文章或者是活動內(nèi)容乾闰,這是一種“拷貝”落追。這就是類似于淺拷貝“Copy”。當(dāng)你一個好朋友對你說涯肩,把你那個項(xiàng)目給我拷一份轿钠,這就是類似于深拷貝”mutableCopy“。

淺拷貝(Copy):指針拷貝病苗,不產(chǎn)生新的對象疗垛,源對象的引用計(jì)數(shù)器+1;

深拷貝(mutableCopy):對象的拷貝硫朦,會產(chǎn)生新的對象贷腕,源對象的引用計(jì)數(shù)器不變。

判斷是淺拷貝和深拷貝就看兩個變量的內(nèi)存地址是否一樣咬展,一樣就是淺拷貝泽裳,不一樣就是深拷貝,也可以改變一個變量的其中一個屬性值看兩者的值是否發(fā)生變化挚赊。

系統(tǒng)原生的對象深淺拷貝區(qū)別

? ? NSObject類提供Copy和mutableCopy方法诡壁,通過這兩個方法即可拷貝已有對象的副本,主要的系統(tǒng)原生對象有:NSString和NSMutableString荠割、NSArray和NSMutableArray妹卿、NSDictionary和NSMutableDictionary、NSSet和NSMutableSet蔑鹦,NSValue和NSNumber只遵守的NSCoping協(xié)議夺克。

注意:基本數(shù)據(jù)類型(assign修飾),沒有對應(yīng)的指針(假象)嚎朽,直接賦值操作铺纽,無需copy操作。

二哟忍、Copy和Strong區(qū)別

? ? 在OC中經(jīng)常會碰到定義一個屬性property狡门,使用copy、strong這兩個詞锅很。

? ? 在系統(tǒng)原生對象中:NSString和NSMutableString其馏、NSArray和NSMutableArray、NSDictionary和NSMutableDictionary爆安、NSSet和NSMutableSet的使用這兩個詞的區(qū)別叛复。NSString、NSArray、NSDictionary褐奥、NSSet都使用Copy這個修飾詞咖耘,而NSMutableString、NSMutableArray撬码、NSMutableDictionary和NSMutableSet則使用Strong修飾儿倒。

@property 中的copy 參數(shù)的作用:

在屬性的setter實(shí)現(xiàn)中對賦值對象做一次copy操作,將copy操作的結(jié)果賦值給屬性呜笑。

情況一:屬性是不可變類型的:如:NSString义桂、NSArray、NSDictionary蹈垢、NSSet

????如果賦值對象是可變的慷吊,那么將一個不可變的副本賦值給屬性。

????如果賦值對象是不可變的曹抬,那么不會產(chǎn)生新的副本溉瓶,只是對復(fù)制對象引用計(jì)數(shù)器加1。

情況二:屬性是可變類型的谤民,建議不要使用copy參數(shù)

? ? 可變類型的屬性會根據(jù)需求對其內(nèi)容進(jìn)行修改堰酿,使用copy屬性的對象類型是不可變的。如果修改這個屬性张足,編譯是不會報錯触创,但是運(yùn)行會奔潰。因?yàn)閲L試修改一個不可變的對象为牍。

情況三:自定義對象類型哼绑,一般情況下不會對自定義的對象使用copy參數(shù)。

? ? 必須遵守<NSCopying>協(xié)議碉咆,實(shí)現(xiàn)CopyWithZone:方法抖韩,才能調(diào)用Copy方法,創(chuàng)建副本疫铜。


總之:Strong茂浮、Copy 和 mutableCopy這三者之間,需要從底層考慮壳咕。OC是一個動態(tài)的面向?qū)ο笳Z言席揽,C語言是OC的底層實(shí)現(xiàn)。Strong主要是對一個堆對象添加一個引用點(diǎn)谓厘,Copy和MutableCopy主要是從拷貝內(nèi)容著手幌羞,是否創(chuàng)建新的內(nèi)容空間。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庞呕,一起剝皮案震驚了整個濱河市新翎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌住练,老刑警劉巖地啰,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異讲逛,居然都是意外死亡亏吝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門盏混,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔚鸥,“玉大人,你說我怎么就攤上這事许赃≈古纾” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵混聊,是天一觀的道長弹谁。 經(jīng)常有香客問我,道長句喜,這世上最難降的妖魔是什么预愤? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮咳胃,結(jié)果婚禮上植康,老公的妹妹穿的比我還像新娘。我一直安慰自己展懈,他們只是感情好销睁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著存崖,像睡著了一般榄攀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上金句,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天檩赢,我揣著相機(jī)與錄音,去河邊找鬼违寞。 笑死贞瞒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的趁曼。 我是一名探鬼主播军浆,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挡闰!你這毒婦竟也來了乒融?” 一聲冷哼從身側(cè)響起掰盘,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赞季,沒想到半個月后愧捕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡申钩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年次绘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撒遣。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡邮偎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出义黎,到底是詐尸還是另有隱情禾进,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布廉涕,位于F島的核電站命迈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏火的。R本人自食惡果不足惜壶愤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望馏鹤。 院中可真熱鬧征椒,春花似錦、人聲如沸湃累。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽治力。三九已至蒙秒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宵统,已是汗流浹背晕讲。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留马澈,地道東北人瓢省。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像痊班,于是被迫代替她去往敵國和親勤婚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

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

  • 春日爛漫涤伐,和好友帶了娃娃一起踏春馒胆,不得不說越來越愛這山缨称,這水,這人祝迂。 40分鐘的車程就到了目的地睦尽,田間房后櫻桃花燦...
    冰雪原野閱讀 281評論 2 3
  • 文/濟(jì)安 現(xiàn)在30歲了,經(jīng)歷了一些生活的經(jīng)驗(yàn)液兽;目前安靜下來,重新去理順自己的生命狀態(tài)掌动,這時候會問自己四啰,我是誰,我的...
    流淌的溪水閱讀 364評論 0 0
  • 【經(jīng)文】但圣靈降臨在你們身上粗恢,你們就必得著能力柑晒,并要在耶路撒冷、猶太全地和撒馬利亞眷射,直到地極匙赞,作我的見證⊙铮」(使徒...
    斐斐feifei閱讀 3,580評論 0 1
  • 抓住細(xì)節(jié)是關(guān)鍵欧宜。 列夫托爾斯泰曾經(jīng)講到過:“我在生活中到處尋找細(xì)節(jié)坐榆,如果把我的作品比做編織好的生活網(wǎng),那么細(xì)節(jié)就是...
    守望小確幸閱讀 534評論 6 11
  • 《這是你的船》-29 在大多數(shù)人看來冗茸,海軍艦長的工作就是穿上帶金邊的軍服席镀,然后沖著下屬發(fā)號施令∠氖可事實(shí)并非如此...
    合肥李風(fēng)麗閱讀 293評論 10 0