iOS中 assign weak strong retain copy區(qū)別

assign與weak

兩者都是弱引用,

assign通常用于普通類(lèi)型屬性(如int,NSInteger)邦马,

assign簡(jiǎn)單賦值,只進(jìn)行值釋放宴卖。這就導(dǎo)致野指針存在滋将,即當(dāng)這塊地址還沒(méi)寫(xiě)上其他值前,能輸出正常值症昏,但一旦重新寫(xiě)上數(shù)據(jù)随闽,該指針隨時(shí)可能沒(méi)有值,造成崩潰肝谭。

weak用于修飾OC對(duì)象橱脸,兩者都不更改索引計(jì)數(shù)(Reference Counting)

只是后者比前者多了一個(gè)功能,后者會(huì)在引用的對(duì)象被釋放的時(shí)候?qū)⒃搶傩灾脼閚il分苇,而前者依然會(huì)指向原來(lái)的位置,這樣就會(huì)變成野指針屁桑。在oc中你給你一個(gè)nil對(duì)象發(fā)送消息不會(huì)crash医寿,但是給一個(gè)對(duì)象發(fā)送他不能解析的消息是會(huì)crash的,所以總的來(lái)說(shuō)weak要比assign安全一些蘑斧。像delegate屬性建議用weak修飾而不是assign靖秩。

weak和strong不同的是 當(dāng)一個(gè)對(duì)象不再有strong類(lèi)型的指針指向它的時(shí)候 它會(huì)被釋放 ,即使還有weak型指針指向它竖瘾。一旦最后一個(gè)strong型指針離去 沟突,這個(gè)對(duì)象將被釋放,所有剩余的weak型指針都將被清除捕传。

strong和retain

聲明屬性時(shí)用strong或者retain效果是一樣的惠拭,都是強(qiáng)引用,除了某些情況下不一樣,其他的時(shí)候也是可以通用的职辅。?

不過(guò)在聲明Block時(shí)棒呛,使用strong和retain會(huì)有截然不同的效果。strong會(huì)等于copy域携,而retain竟然等于assign簇秒!strong在修飾block的時(shí)候就相當(dāng)于copy,而retain修飾block的時(shí)候就相當(dāng)于assign秀鞭,這樣block會(huì)出現(xiàn)提前被釋放掉的危險(xiǎn)趋观。

  當(dāng)然定義Block還是應(yīng)該用copy(還有其他需要注意的地方,可以參考這篇文章:iOS: ARC和非ARC下使用Block屬性的問(wèn)題)锋边,因?yàn)榉茿RC下不copy的Block會(huì)在棧中皱坛,ARC中的Block都會(huì)在堆上的。

copy會(huì)重新開(kāi)辟新的內(nèi)存來(lái)保存一份相同的數(shù)據(jù)宠默。被賦值對(duì)象和原值修改互不影響麸恍。

strong和weak賦值都指向原來(lái)數(shù)據(jù)地址,區(qū)別是前者會(huì)對(duì)數(shù)據(jù)地址進(jìn)行引用計(jì)數(shù)+1搀矫,后者不會(huì)


retain:自動(dòng)幫我們生成getter/setter方法抹沪,并且生成的是內(nèi)存管理代碼(引用計(jì)數(shù)器+1)。 assign:不會(huì)自動(dòng)幫助我們?cè)趕etter/getter方法中生成內(nèi)存管理代碼瓤球,僅僅生成普通的?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末融欧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卦羡,更是在濱河造成了極大的恐慌噪馏,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绿饵,死亡現(xiàn)場(chǎng)離奇詭異欠肾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拟赊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)刺桃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人吸祟,你說(shuō)我怎么就攤上這事瑟慈。” “怎么了屋匕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵葛碧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我过吻,道長(zhǎng)进泼,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮缘琅,結(jié)果婚禮上粘都,老公的妹妹穿的比我還像新娘。我一直安慰自己刷袍,他們只是感情好翩隧,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著呻纹,像睡著了一般堆生。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雷酪,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天淑仆,我揣著相機(jī)與錄音,去河邊找鬼哥力。 笑死蔗怠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吩跋。 我是一名探鬼主播寞射,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锌钮!你這毒婦竟也來(lái)了桥温?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤梁丘,失蹤者是張志新(化名)和其女友劉穎侵浸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體氛谜,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掏觉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了值漫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片履腋。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖惭嚣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情悔政,我是刑警寧澤晚吞,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站谋国,受9級(jí)特大地震影響槽地,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一捌蚊、第九天 我趴在偏房一處隱蔽的房頂上張望集畅。 院中可真熱鬧,春花似錦缅糟、人聲如沸挺智。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赦颇。三九已至,卻和暖如春赴涵,著一層夾襖步出監(jiān)牢的瞬間媒怯,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工髓窜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扇苞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓寄纵,卻偏偏與公主長(zhǎng)得像鳖敷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子擂啥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359