(IOS)強引用與弱引用

1.強引用

在ARC中修飾符是__strong,比如

__strong NSObject *obj;

不加修飾符的話默認都是__strong运悲。

2.弱引用

在ARC中修飾符是__weak乍构,比如

__weak NSObject *obj;

3.兩者區(qū)別

簡單點講的話旨袒,強引用持有對象瓣铣,而弱引用不持有對象炮叶。

下面看代碼詳解:

? ? __strong NSObject *obj1=[[NSObject alloc] init];

? ? __strong NSObject *obj2=obj1;

? ? NSLog(@"%@,%@",obj1,obj2);

? ? obj1=nil;

? ? NSLog(@"%@,%@",obj1,obj2);

? ? //輸出 :

? ? //<NSObject: 0x7fef53708b80>,<NSObject: 0x7fef53708b80>

? ? //(null),<NSObject: 0x7fef53708b80>

將obj2聲明改為__weak

? ? __strong NSObject *obj1=[[NSObject alloc] init];

? ? __weak NSObject *obj2=obj1;

? ? NSLog(@"%@,%@",obj1,obj2);

? ? obj1=nil;

? ? NSLog(@"%@,%@",obj1,obj2);

? ? //輸出 :

? ? //<NSObject: 0x7fef53708b80>,<NSObject: 0x7fef53708b80>

? ? //(null),(null)

從上面可以看出使用__strong 和__weak的區(qū)別碗旅,因為strong的對象會使retainCount+1,而weak的并不會悴灵。

所以第一個例子的retainCount為2扛芽,obj1=nil之后retainCount為1,并不會對obj2造成影響积瞒,而第二個例子obj1=nil之后retainCount 為0了川尖,內(nèi)存也跟著釋放了,所以obj2也為nil茫孔。

(這里提下weak和MRC時代的assign的區(qū)別叮喳,兩者都可以用于弱引用,但是內(nèi)存釋放后使用weak會將對象置nil缰贝,而assign不會馍悟,會造成野指針,現(xiàn)在assign一般只用在基礎(chǔ)類型)剩晴。

4.應(yīng)用

至于什么時候用strong 和weak锣咒?

平時一般都是用strong,也就是默認不添加赞弥,在會照成循環(huán)引用時才使用weak毅整。

當兩個不同的對象各有一個強引用指向?qū)Ψ綍r就造成循環(huán)引用,會導致對象無法釋放绽左,例如我們常用的delegate,見圖:

這就是我們在申明delegate時都是用weak的原因(MRC的話是用assign)

@property (nonatomic, weak) id<Delegate>delegate

block的使用也會照成循環(huán)引用悼嫉,比如當一個對象持有block,而該block又持有該對象時拼窥,類似下面的偽代碼會照成循環(huán)引用:

[self block:^{

? ? self.value=1;

}];

應(yīng)該改為

__weak typeof(self) weakself=self;

[self block:^{

? ? weakself.value=1;

}];

但并不是block里都需要用weak戏蔑,例如下面的代碼并不會照成循環(huán)引用:

[UIView animateWithDuration:0.2 animations:^{

? ? self.value=1;

}];

注意:只有該對象持有block,而block里的代碼塊又持有該對象時才需要用到weak鲁纠。

NSTimer也會照成循環(huán)引用总棵,所以使用了NSTimer后,釋放資源前要先調(diào)用invalidate方法

[Timer invalidate];

Timer = nil;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末改含,一起剝皮案震驚了整個濱河市彻舰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌候味,老刑警劉巖刃唤,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異白群,居然都是意外死亡尚胞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門帜慢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笼裳,“玉大人,你說我怎么就攤上這事粱玲」恚” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵抽减,是天一觀的道長允青。 經(jīng)常有香客問我,道長卵沉,這世上最難降的妖魔是什么颠锉? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮史汗,結(jié)果婚禮上琼掠,老公的妹妹穿的比我還像新娘。我一直安慰自己停撞,他們只是感情好瓷蛙,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著戈毒,像睡著了一般艰猬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上副硅,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天姥宝,我揣著相機與錄音,去河邊找鬼恐疲。 笑死腊满,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的培己。 我是一名探鬼主播碳蛋,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼省咨!你這毒婦竟也來了肃弟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎笤受,沒想到半個月后穷缤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡箩兽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年津肛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汗贫。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡身坐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出落包,到底是詐尸還是另有隱情部蛇,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布咐蝇,位于F島的核電站涯鲁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嘹害。R本人自食惡果不足惜撮竿,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笔呀。 院中可真熱鬧幢踏,春花似錦、人聲如沸许师。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽微渠。三九已至搭幻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逞盆,已是汗流浹背檀蹋。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留云芦,地道東北人俯逾。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像舅逸,于是被迫代替她去往敵國和親桌肴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

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

  • 1.1 什么是自動引用計數(shù) 概念:在 LLVM 編譯器中設(shè)置 ARC(Automaitc Reference Co...
    __silhouette閱讀 5,159評論 1 17
  • 最近在復習iOS內(nèi)存管理相關(guān)的知識水醋,網(wǎng)上找了些資料順便匯總下。 首先說一些基礎(chǔ)性的東西: 1.強引用 在ARC中修...
    pengcff閱讀 14,753評論 4 30
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,101評論 1 32
  • 明天就要開始我的日本之行啦彪置!雖然是第二次去了拄踪,但是想到日本的飯團、拉面悉稠、露天溫泉宫蛆、楓葉,還是挺期待的的猛。過去,我每去...
    月亮在你的眼睛閱讀 347評論 0 0
  • 大雁南飛 風有了涼意 稻子 黃了 菊花 開了 楓葉 紅了 池塘里 殘荷一片 你采摘的 那一支蓮 寫滿惦念
    夜書房閱讀 152評論 0 0