iOS內(nèi)存泄漏排查

現(xiàn)在iOS開發(fā)中大部分都是用了自動引用計數(shù)器的齿穗,內(nèi)存管理基本上是編譯器幫我們處理了,唯一要自己的處理的就是循環(huán)引用泽论。在網(wǎng)上有很多教程告訴我們該如何避免循環(huán)引用夺蛇。如代理用weak修飾,block要類似__weak ViewController *weakSelf = self; 這樣處理副渴。我知道這些奈附,大部分開發(fā)者都是懂的。但是很時候會忘記煮剧,或者想的不夠多斥滤。例如 某ViewController持有AView和BView,而且AView是加在BView上的勉盅,這種情況很多時候是很難發(fā)現(xiàn)的佑颇,所以我們需要工具幫助我們排查。上次在Android上用了LeakCanary之后草娜,查找內(nèi)存泄漏挑胸,修復(fù)bug的效率高多了,這次還是一樣宰闰,介紹一下iOS上面的工具-MLeaksFinder茬贵。這個工具的介紹有很多,我就不多說了移袍,我更關(guān)心的是如何用起來解藻,最近一個項目,我小試牛刀咐容,效果立竿見影舆逃。如果內(nèi)存泄漏,會在控制臺打印如下的信息
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Possibly Memory Leak.In case that MyTableViewCell should not be dealloced, override -willDealloc in MyTableViewCell by returning NO.
View-ViewController stack: (
MyTableViewController,
UITableView,
UITableViewWrapperView,
MyTableViewCell
)'
那該怎樣處理呢戳粒? 其實控制臺的信息已經(jīng)告訴我們了 MyTableViewCell should not be dealloced, override -willDealloc in MyTableViewCell by returning NO路狮,重寫MyTableViewCell的-(void)willDealloc方法,將里面引用外面的東西置為nil就好了蔚约。處理之后重新運行就不會再提示了奄妨。是不是很簡單呢?工具幫助我們提高效率苹祟。
還有一種情況是block的循環(huán)引用砸抛,這個是無法列出堆棧的评雌。只能靠自己觀察,在block使用weakSelf直焙,還有一個值得主要的是例如某屬性:
@property (nonatomic,strong) UILabel *titleLabel;
而你在block里面這樣使用了
_titleLabel.text=xx
這樣也是不行的景东。但是這個我們很容易忽略。
我覺得一個好的習(xí)慣就是在每個對象了里面都重寫-(void)willDealloc奔誓,將全部屬性都置為nil斤吐,這樣就可以防范于未然了。雖然這個工具只能幫助我們檢測ViewController上面的內(nèi)存泄漏厨喂,但是通過修復(fù)bug可以更好的規(guī)范我們的代碼和措。
其實xcode也提供了工具幫助我們檢測循環(huán)引用了,


QQ20161017-0.png

點擊它就可以看到當(dāng)前所有對象的引用關(guān)系了

QQ20161017-1.png

有沒有循環(huán)引用蜕煌,一眼就看出來了派阱。


QQ20161017-2.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市斜纪,隨后出現(xiàn)的幾起案子贫母,更是在濱河造成了極大的恐慌,老刑警劉巖傀广,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颁独,死亡現(xiàn)場離奇詭異彩届,居然都是意外死亡伪冰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門樟蠕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贮聂,“玉大人,你說我怎么就攤上這事寨辩∠判福” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵靡狞,是天一觀的道長耻警。 經(jīng)常有香客問我,道長甸怕,這世上最難降的妖魔是什么甘穿? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮梢杭,結(jié)果婚禮上温兼,老公的妹妹穿的比我還像新娘。我一直安慰自己武契,他們只是感情好募判,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布荡含。 她就那樣靜靜地躺著,像睡著了一般届垫。 火紅的嫁衣襯著肌膚如雪释液。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天装处,我揣著相機與錄音均澳,去河邊找鬼。 笑死符衔,一個胖子當(dāng)著我的面吹牛找前,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播判族,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼躺盛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了形帮?” 一聲冷哼從身側(cè)響起槽惫,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辩撑,沒想到半個月后界斜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡合冀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年各薇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片君躺。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡峭判,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出棕叫,到底是詐尸還是另有隱情林螃,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布俺泣,位于F島的核電站疗认,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伏钠。R本人自食惡果不足惜横漏,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贝润。 院中可真熱鬧绊茧,春花似錦、人聲如沸打掘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亡笑,卻和暖如春侣夷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仑乌。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工百拓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晰甚。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓衙传,卻偏偏與公主長得像,于是被迫代替她去往敵國和親厕九。 傳聞我的和親對象是個殘疾皇子蓖捶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

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