Instruments檢測(cè)內(nèi)存泄露

前言

    如果要檢測(cè)內(nèi)存泄露,我們會(huì)使用Xcode7自帶的Instruments中的Leaks工具來(lái)檢測(cè).

現(xiàn)在的開(kāi)發(fā)環(huán)境是ARC,所以很少會(huì)出現(xiàn)內(nèi)存泄漏的情況. 不過(guò)我們一定要養(yǎng)好碼代碼的規(guī)范性. 例如:使用通知,別忘了移除; 使用presentViewController彈出新的控制器,別忘了dismiss等等.

如果出現(xiàn)了內(nèi)存泄露,一般是導(dǎo)入了c的第三方框架. 或者在項(xiàng)目中使用c的類(lèi)創(chuàng)建了對(duì)象,沒(méi)有手動(dòng)釋放該對(duì)象;例如Quartz2D繪圖

1.獲取圖形上下文
  CGContextRef ctx=UIGraphicsGetCurrentContext();     
2.繪圖
2.1創(chuàng)建一條直線繪圖的路徑

注意:但凡通過(guò)Quartz2D中帶有creat/copy/retain方法創(chuàng)建出來(lái)的值都必須要釋放

  CGMutablePathRef path=CGPathCreateMutable();
2.2把繪圖信息添加到路徑里
  CGPathMoveToPoint(path, NULL, 20, 20);
  CGPathAddLineToPoint(path, NULL, 200, 300);
2.3把路徑添加到上下文中

把繪制直線的繪圖信息保存到圖形上下文中

  CGContextAddPath(ctx, path);
3.渲染
  CGContextStrokePath(ctx);
4.釋放前面創(chuàng)建的路徑.如果沒(méi)有寫(xiě)這句就會(huì)造成內(nèi)存泄露
  CGPathRelease(path);

Leaks的使用方法:

  • 首先打開(kāi)Xcode7自帶的Instruments (快捷鍵 cmd + i)


    Podfile.png
  • 然后會(huì)顯示Instruments工具界面,選擇Ladks


    Instruments.png
  • 選擇之后界面如下圖, 有兩個(gè)位置需要設(shè)置


    Instruments2.jpeg

    到這里之后,我們前期的準(zhǔn)備工作做完啦,下面開(kāi)始正式的測(cè)試!

  • 1.選中Xcode先把程序(command + R)運(yùn)行起來(lái)

  • 2.由于Leaks是動(dòng)態(tài)監(jiān)測(cè),所以我們需要手動(dòng)操作APP,一邊操作,一邊觀察Leaks的變化,當(dāng)出現(xiàn)紅色叉時(shí),就監(jiān)測(cè)到了內(nèi)存泄露,點(diǎn)擊右上角的第二個(gè),進(jìn)行暫停檢測(cè)

  • 3.選中顯示的若干條中的一條,雙擊,會(huì)自動(dòng)跳到內(nèi)存泄露代碼處,如圖所示

  • 4.找到了內(nèi)存泄露的地方,那么我們就可以修改即可

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

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

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