iOS 內(nèi)存泄漏一次實(shí)踐

項(xiàng)目背景:項(xiàng)目是一個RN+原生混合項(xiàng)目,其中拍照是在RN進(jìn)行的,拍照后圖片要進(jìn)行自定義裁剪和黑白素描處理、涂抹,是在原生進(jìn)行的。當(dāng)多次(相當(dāng)多次)拍照處理圖片后,iOS會閃退,調(diào)試后Xcode打印Message from debugger: Terminated due to memory issue

解決過程相當(dāng)坎坷,剛開始以為是RN的相機(jī)庫有內(nèi)存問題,注釋掉原生跳轉(zhuǎn)等多次查看內(nèi)存變化,最后發(fā)現(xiàn)還是原生圖片編輯的鍋,而且發(fā)現(xiàn)問題竟然不是一個原因引起的泄漏,基本上所有會引起泄漏的情況都包含了。。。

1、block循環(huán)引用

圖片裁剪老板體驗(yàn)要求比較高,項(xiàng)目時間緊,是在一個第三方基礎(chǔ)上修改的??赡苓@個項(xiàng)目是MRC遷移過來的,block里的weakSelf是用__block修飾的。。。解決方法當(dāng)然是__block改成__weak

2、NSTimer釋放

裁剪過程有動畫,還用到了定時器控制。要手動釋放

3、UIGraphicsBeginImageContextWithOptions之后一定要UIGraphicsEndImageContext()才會釋放
自己總結(jié)的內(nèi)存泄漏調(diào)試步驟:

1、來回進(jìn)入返回相關(guān)VC看內(nèi)存變化
2、profile的leak調(diào)試
3、注釋掉猜測會泄漏的View,查看還是否泄漏,如果不泄漏了可以斷定就是這個View在搞事情
4、在這個View里搜一下block、delegate是不是循環(huán)引用了。搜一下有沒有用NSTimer。搜一下有沒有繪圖、圖片處理需要自己釋放的沒有釋放處理

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 30,235評論 8 265
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,030評論 25 709
  • 最近朋友推薦一個K歌的軟件,每晚二半夜自己坐沙發(fā)上動情演繹,自嗨到不行,港臺內(nèi)地歌手的歌輪番的唱最后還不過癮開始...
    pmh閱讀 404評論 0 0
  • (真真假假)大千世界蕓蕓生,無奇不有變化新?;糜俺窍抡l主宰,真真假假有誰知。愚人節(jié)里愚人笑,漁人碼頭漁滿倉。今天周...
    甘朝武閱讀 250評論 0 0
  • 今天是每日反思第58天。 一直在強(qiáng)調(diào),成長是關(guān)鍵。關(guān)于如何成長這個問題,我個人認(rèn)為要搞清楚兩個方面,一個是方向,一...
    荒原蒼狼閱讀 460評論 0 2

友情鏈接更多精彩內(nèi)容