iOS 面試題~避免循環(huán)引用~解決方法

//聯(lián)系人:石虎QQ:1224614774昵稱:嗡嘛呢叭咪哄

一传睹、概念:

循環(huán)引用:指的是多個對象相互引用時,使得引用形成一個環(huán)形岸晦,導致外部無法真正是否掉這塊環(huán)形內存欧啤。其實有點類似死鎖。

其實循環(huán)引用就是說我們的強引用形成了閉環(huán)启上,還會有很多自己寫的代碼中會出現(xiàn)邢隧,平時還是要注意寫法。當然xcode的instruments也能幫助到大家排除一些這樣類似的內存問題冈在。

二倒慧、出現(xiàn)循環(huán)引用的情況

例子:A->B->C->....->X->B ? ->表示強引用,這樣的B的引用計數(shù)就是2,假如A被系統(tǒng)釋放了纫谅,理論上A會自動減小A所引用的資源炫贤,就是B,那么這時候B的引用計數(shù)就變成了1付秕,所有B無法被釋放兰珍,然而A已經被釋放了,所有B的內存部分就肯定無法再釋放再重新利用這部分內存空間了询吴,導致內存泄漏掠河。

1.NSTimer

創(chuàng)建使用NSTimer的時候,NSTimer會默認對當前self有個強引用猛计,所有在self使用完成打算是否的時候唠摹,一定要先使用NSTimer的invalidate來停止是否時間控制對self的引用

[_timer?invalidate];

2.Block

Block也是比較常見的循環(huán)引用問題,在Block中使用了self容易出現(xiàn)循環(huán)引用奉瘤,因此很多人在使用block的時候跃闹,加入里面有用到self的操作都會聲明一個__weak來修飾self。其實便不是這樣的毛好,不是所有使用了Block都會出現(xiàn)Self循環(huán)引用問題望艺,只有self擁有Block的強引用才會出現(xiàn)這種情況。

所以一般在函數(shù)中臨時使用Block是不會出現(xiàn)循環(huán)應用的肌访,因為這時候Block引用是屬于棧的找默。當棧上的block釋放后,block中對self的引用計數(shù)也會減掉

當然不一定要Self對Block有直接的引用才會出現(xiàn)吼驶,假如self的變量B惩激,B中有個Block變量,就容易出現(xiàn)這種情況蟹演,好的是在block出現(xiàn)循環(huán)引用的风钻,xcode7會出現(xiàn)警告提示(之前版本不確定)。

3.delegate

Delegate是ios中開發(fā)中最常遇到的循環(huán)引用酒请,一般在聲明delegate的時候都要使用弱引用weak或者assign

@property(nonatomic,?weak,nullable)id?delegate;

當然怎么選擇使用assign還是weak骡技,MRC的話只能用assign,在ARC的情況下最好使用weak羞反,因為weak修飾的變量在是否后自動為指向nil布朦,防止不安全的野指針存在

謝謝!!!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市昼窗,隨后出現(xiàn)的幾起案子是趴,更是在濱河造成了極大的恐慌,老刑警劉巖澄惊,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唆途,死亡現(xiàn)場離奇詭異富雅,居然都是意外死亡,警方通過查閱死者的電腦和手機肛搬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門吹榴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人滚婉,你說我怎么就攤上這事图筹。” “怎么了让腹?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵远剩,是天一觀的道長。 經常有香客問我骇窍,道長瓜晤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任腹纳,我火速辦了婚禮痢掠,結果婚禮上,老公的妹妹穿的比我還像新娘嘲恍。我一直安慰自己足画,他們只是感情好,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布佃牛。 她就那樣靜靜地躺著淹辞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪俘侠。 梳的紋絲不亂的頭發(fā)上象缀,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機與錄音爷速,去河邊找鬼央星。 笑死,一個胖子當著我的面吹牛惫东,可吹牛的內容都是我干的莉给。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼凿蒜,長吁一口氣:“原來是場噩夢啊……” “哼禁谦!你這毒婦竟也來了?” 一聲冷哼從身側響起废封,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丧蘸,沒想到半個月后漂洋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體遥皂,經...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年刽漂,在試婚紗的時候發(fā)現(xiàn)自己被綠了演训。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡贝咙,死狀恐怖样悟,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情庭猩,我是刑警寧澤窟她,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站蔼水,受9級特大地震影響震糖,放射性物質發(fā)生泄漏。R本人自食惡果不足惜趴腋,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一吊说、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧优炬,春花似錦颁井、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至糊余,卻和暖如春秀又,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贬芥。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工吐辙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蘸劈。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓昏苏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親威沫。 傳聞我的和親對象是個殘疾皇子贤惯,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內容

  • 1.屬性readwrite,readonly棒掠,assign孵构,retain,copy烟很,nonatomic 各是什么作...
    曾令偉閱讀 1,067評論 0 10
  • 多線程颈墅、特別是NSOperation 和 GCD 的內部原理蜡镶。運行時機制的原理和運用場景。SDWebImage的原...
    LZM輪回閱讀 2,009評論 0 12
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 1,990評論 0 7
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,166評論 30 470
  • 把網(wǎng)上的一些結合自己面試時遇到的面試題總結了一下恤筛,以后有新的還會再加進來官还。 1. OC 的理解與特性 OC 作為一...
    AlaricMurray閱讀 2,569評論 0 20