循環(huán)引用的問題

循環(huán)引用這種方式雖然很簡單歧胁,但是有一個比較大的瑕疵,就是不能很好的解決循環(huán)引用的問題桶现。

什么會造成循環(huán)引用問題呢?

比如說A和B兩個對象鼎姊,相互引用了對方作為自己的成員變量骡和。只有當自己銷毀的時候才能將成員變量的引用計數(shù)-1。但是因為A對象的銷毀又依賴于B對象相寇,B對象銷毀又依賴于A對象慰于。這樣就造成了循環(huán)引用的問題。英文稱之為Reference Cycle唤衫。在外界這兩個對象已經(jīng)沒有任何對象能夠訪問到了婆赠,而且也不能被釋放。

解決循環(huán)引用問題的方法:

1.第一種就是我們清楚地知道這里有循環(huán)引用佳励,在合理的位置(根據(jù)業(yè)務的具體邏輯)主動斷開循環(huán)中的一個引用休里,使得對象得以回收。

主動斷開循環(huán)引用這種常見于各種block相關的代碼邏輯中

2.使用弱引用

弱引用雖然持有對象赃承,但是并不增加引用計數(shù)妙黍,這樣就避免了循環(huán)引用的產(chǎn)生,在iOS開發(fā)中瞧剖,弱引用通常在delegate模式中使用拭嫁,舉個例子來說吧,兩個ViewController, A和B抓于,viewControllerA需要彈出ViewControllerB做粤,讓用戶輸入一些內容,當用戶輸入完成之后捉撮,ViewControllerB需要返回給ViewControllerA怕品,這個時候viewController的delegate對象通常是一個弱引用,以避免兩個ViewController相互引用對方造成循環(huán)引用的問題


弱引用的實現(xiàn)原理:

弱引用的實現(xiàn)原理呕缭,系統(tǒng)對于每一個有弱引用的對象堵泽,都維護一個表來記錄它所有的若引用的指針地址。這樣恢总,當一個對象的引用計數(shù)為0的時候迎罗,系統(tǒng)就通過這張表,找到所以的弱引用指針片仿,繼而將他們都設置成為nil


使用Xcode檢測循環(huán)引用

Xcode中的instrument工具可以很方便的檢測循環(huán)引用纹安。

在Xcode的菜單欄選擇:Product ->Profile,然后選擇Leaks,在點擊右下角的Profile按鈕就可以開始檢測。



-------------------引自唐巧

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末厢岂,一起剝皮案震驚了整個濱河市光督,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌塔粒,老刑警劉巖结借,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異卒茬,居然都是意外死亡船老,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門圃酵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柳畔,“玉大人,你說我怎么就攤上這事郭赐⌒胶” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵捌锭,是天一觀的道長俘陷。 經(jīng)常有香客問我,道長观谦,這世上最難降的妖魔是什么岭洲? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮坎匿,結果婚禮上盾剩,老公的妹妹穿的比我還像新娘。我一直安慰自己替蔬,他們只是感情好告私,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著承桥,像睡著了一般驻粟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凶异,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天蜀撑,我揣著相機與錄音,去河邊找鬼剩彬。 笑死酷麦,一個胖子當著我的面吹牛,可吹牛的內容都是我干的喉恋。 我是一名探鬼主播沃饶,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼母廷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了糊肤?” 一聲冷哼從身側響起琴昆,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎馆揉,沒想到半個月后业舍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡升酣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年勤讽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拗踢。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖向臀,靈堂內的尸體忽然破棺而出巢墅,到底是詐尸還是另有隱情,我是刑警寧澤券膀,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布君纫,位于F島的核電站,受9級特大地震影響芹彬,放射性物質發(fā)生泄漏蓄髓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一舒帮、第九天 我趴在偏房一處隱蔽的房頂上張望会喝。 院中可真熱鬧,春花似錦玩郊、人聲如沸肢执。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽预茄。三九已至,卻和暖如春侦厚,著一層夾襖步出監(jiān)牢的瞬間耻陕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工刨沦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留诗宣,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓想诅,卻偏偏與公主長得像梧田,于是被迫代替她去往敵國和親淳蔼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容