iOS--強(qiáng)引用矿咕,弱引用 及strong, weak,retain,copy,assign的關(guān)系

強(qiáng)引用和弱引用:
特點(diǎn):
在強(qiáng)引用中,有時(shí)會(huì)出現(xiàn)循環(huán)引用的情況狼钮,這時(shí)就需要弱引用來(lái)幫忙(__weak)碳柱。
強(qiáng)引用持有對(duì)象,弱引用不持有對(duì)象熬芜。
強(qiáng)引用可以釋放對(duì)象莲镣,但弱引用不可以,因?yàn)槿跻貌怀钟袑?duì)象涎拉,當(dāng)弱引用指向一個(gè)強(qiáng)引用所持有的對(duì)象時(shí)瑞侮,當(dāng)強(qiáng)引用將對(duì)象釋放掉后,弱引用會(huì)自動(dòng)的被賦值為nil鼓拧,即弱引用會(huì)自動(dòng)的指向nil半火。

我們已經(jīng)知道OC中的內(nèi)存管理是通過(guò)“引用計(jì)數(shù)器”來(lái)實(shí)現(xiàn)的。一個(gè)對(duì)象的生命周期取決于它是否還被其他對(duì)象引用(是否retainCount=0)季俩。但在有些情況下钮糖,我們并不希望對(duì)象的銷毀時(shí)間由是否被其他對(duì)象引用來(lái)決定,而是這個(gè)對(duì)象本該是什么時(shí)候銷毀就什么時(shí)候被銷毀酌住。這時(shí)店归,我們得引入“強(qiáng)引用”和“弱引用”的概念。

強(qiáng)引用:當(dāng)前對(duì)象被其他對(duì)象引用時(shí)酪我,會(huì)執(zhí)行retain操作消痛,引用計(jì)數(shù)器+1。當(dāng)retainCount=0時(shí)都哭,該對(duì)象才會(huì)被銷毀肄满。因?yàn)槲覀円M(jìn)行對(duì)象的內(nèi)存管理谴古,所以這是默認(rèn)的引用方式。(默認(rèn)是強(qiáng)引用)
弱引用:當(dāng)前對(duì)象的生命周期不被是否由其他對(duì)象引用限制稠歉,它本該什么時(shí)候銷毀就什么時(shí)候被銷毀掰担。即使它的引用沒(méi)斷,但是當(dāng)它的生存周期到了時(shí)就會(huì)被銷毀怒炸。
在定義屬性時(shí)带饱,若聲明為retain類型的,則就是強(qiáng)引用阅羹;若聲明為assign類型的勺疼,則就是弱引用。后來(lái)內(nèi)存管理都由ARC來(lái)完成后捏鱼,若是強(qiáng)引用执庐,則就聲明為strong;若是弱引用导梆,則就聲明為weak轨淌。

所以說(shuō),retain和strong是一致的(聲明為強(qiáng)引用)看尼;assign和weak是基本一致的(聲明為弱引用)递鹉。 之所以說(shuō)它倆是基本一致是因?yàn)樗鼈z還是有所不同的,weak嚴(yán)格的說(shuō)應(yīng)當(dāng)叫“ 歸零弱引用 ”藏斩,即當(dāng)對(duì)象被銷毀后躏结,會(huì)自動(dòng)的把它的指針置為nil,這樣可以防止野指針錯(cuò)誤狰域。而assign銷毀對(duì)象后不會(huì)把該對(duì)象的指針置nil媳拴,對(duì)象已經(jīng)被銷毀,但指針還在癡癡的指向它兆览,這就成了野指針屈溉,這是比較危險(xiǎn)的。
避免“強(qiáng)引用循環(huán)“的僵局:
默認(rèn)的引用方式是強(qiáng)引用拓颓,但上面說(shuō)了有時(shí)我們還得使用弱引用语婴,那是什么情況呢描孟?
答案驶睦,強(qiáng)引用循環(huán):A對(duì)象強(qiáng)引用了B對(duì)象,B對(duì)象也強(qiáng)引用了A匿醒。因?yàn)槎际菑?qiáng)引用场航,也就是無(wú)論是A是B都要在對(duì)方的引用斷了后才能銷毀,但要斷了引用廉羔,就必須對(duì)方對(duì)象銷毀溉痢。就會(huì)出現(xiàn)這種僵局,為了避免出現(xiàn)這種情況,就應(yīng)該有一個(gè)對(duì)象“示弱”孩饼,使其為“弱引用”髓削。
比較常見(jiàn)的,視圖中的父子視圖之間的引用:父視圖強(qiáng)引用子視圖镀娶,子視圖弱引用父視圖立膛。
總結(jié):由于要進(jìn)行內(nèi)存管理的緣故,OC里的引用默認(rèn)都是強(qiáng)引用梯码,但為了避免出現(xiàn)”強(qiáng)引用循環(huán)僵局“宝泵,所以有了弱引用(assign)。
retain和strong都是 指針拷貝轩娶。 當(dāng)有其他對(duì)象引用當(dāng)前對(duì)象時(shí)儿奶,會(huì)拷貝一份當(dāng)前對(duì)象的地址,這樣它就也指向當(dāng)前對(duì)象了鳄抒。所以闯捎,還是同一個(gè)對(duì)象,只是retainCount+1嘁酿;
而copy則是 內(nèi)容拷貝隙券。 是實(shí)實(shí)在在的拷貝一個(gè)新的對(duì)象,拷貝了它的內(nèi)存內(nèi)容闹司,成為一個(gè)新的對(duì)象(retainCount=1)娱仔。
深拷貝(mutableCopy)和淺拷貝(copy):
深拷貝就是內(nèi)容拷貝,淺拷貝就是指針拷貝游桩。

在OC中牲迫,若要進(jìn)行對(duì)象的拷貝,則該對(duì)象所屬的類必須遵守NSCopying和NSMutableCopy協(xié)議借卧,并重寫copyWithZone:和mutableCopyWithZone:方法盹憎。而系統(tǒng)原生類,之所以可以直接進(jìn)行拷貝是因?yàn)樗褞臀覀冏詣?dòng)做了這些事铐刘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陪每,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子镰吵,更是在濱河造成了極大的恐慌檩禾,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疤祭,死亡現(xiàn)場(chǎng)離奇詭異盼产,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)勺馆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門戏售,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)侨核,“玉大人,你說(shuō)我怎么就攤上這事灌灾〈暌耄” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵锋喜,是天一觀的道長(zhǎng)侥衬。 經(jīng)常有香客問(wèn)我,道長(zhǎng)跑芳,這世上最難降的妖魔是什么轴总? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮博个,結(jié)果婚禮上怀樟,老公的妹妹穿的比我還像新娘。我一直安慰自己盆佣,他們只是感情好往堡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著共耍,像睡著了一般虑灰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痹兜,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天穆咐,我揣著相機(jī)與錄音,去河邊找鬼字旭。 笑死对湃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的遗淳。 我是一名探鬼主播拍柒,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼屈暗!你這毒婦竟也來(lái)了拆讯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤养叛,失蹤者是張志新(化名)和其女友劉穎种呐,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體一铅,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡陕贮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年堕油,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了潘飘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肮之。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卜录,靈堂內(nèi)的尸體忽然破棺而出戈擒,到底是詐尸還是另有隱情,我是刑警寧澤艰毒,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布筐高,位于F島的核電站,受9級(jí)特大地震影響丑瞧,放射性物質(zhì)發(fā)生泄漏柑土。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一绊汹、第九天 我趴在偏房一處隱蔽的房頂上張望稽屏。 院中可真熱鬧,春花似錦西乖、人聲如沸狐榔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)薄腻。三九已至,卻和暖如春届案,著一層夾襖步出監(jiān)牢的瞬間庵楷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工楣颠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嫁乘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓球碉,卻偏偏與公主長(zhǎng)得像蜓斧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子睁冬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

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