https://github.com/Tencent/MLeaksFinder
一、MLeaksFinder - 簡(jiǎn)介
MLeaksFinder 是 WeRead 團(tuán)隊(duì)開源的iOS內(nèi)存泄漏檢測(cè)工具。
MLeaksFinder 提供了內(nèi)存泄露檢測(cè)更好的解決方案。引進(jìn) MLeaksFinder 后,就可以在日常的開發(fā),調(diào)試業(yè)務(wù)邏輯的過程中自動(dòng)地發(fā)現(xiàn)并警告內(nèi)存泄漏。開發(fā)者無(wú)需打開 Instrument 等工具,也無(wú)需為了找內(nèi)存泄漏而去跑額外的流程。并且,由于開發(fā)者是在修改代碼之后一跑業(yè)務(wù)邏輯就能發(fā)現(xiàn)內(nèi)存泄漏的,這使得開發(fā)者能很快地意識(shí)到是哪里的代碼寫得問題。這種及時(shí)的內(nèi)存泄漏的發(fā)現(xiàn)在很大的程度上降低了修復(fù)內(nèi)存泄漏的成本。
當(dāng)發(fā)生內(nèi)存泄漏時(shí),MLeaksFinder會(huì)用彈窗alert的形式告訴開發(fā)者內(nèi)存泄漏的對(duì)象,開發(fā)者可以把a(bǔ)lert關(guān)掉,并繼續(xù)調(diào)試業(yè)務(wù)邏輯。
二、安裝
pod 'MLeaksFinder'
MLeaksFinder在Pod安裝后生效,無(wú)需添加任何代碼或?qū)肴魏晤^文件。
注意:由于Facebook的BSD-plus-Patents許可證,F(xiàn)BRetainCycleDetector已從podspec中刪除。 如果要使用FBRetainCycleDetector查找保留周期,請(qǐng)將pod'FBRetainCycleDetector'添加到項(xiàng)目的Podfile中,然后在MLeaksFinder.h中打開宏MEMORY_LEAKS_FINDER_RETAIN_CYCLE_ENABLED。
三、使用方式
把 MLeaksFinder 目錄下的文件添加到你的項(xiàng)目中,就可以在運(yùn)行時(shí)(debug 模式下)幫助你檢測(cè)項(xiàng)目里的內(nèi)存泄露了,無(wú)需修改任何業(yè)務(wù)邏輯代碼,而且只在 debug 下開啟,完全不影響你的 release 包。
把 MLeaksFinder 目錄下的文件添加到你的項(xiàng)目中,就可以在運(yùn)行時(shí)(debug 模式下)幫助你檢測(cè)項(xiàng)目里的內(nèi)存泄露了,無(wú)需修改任何業(yè)務(wù)邏輯代碼,而且只在 debug 下開啟,完全不影響你的 release 包。
亦可手動(dòng)引入,直接把 MLeaksFinder 的代碼放到項(xiàng)目里即生效。如果把 MLeaksFinder 做為子工程,需要在主工程的 Build Settings -> Other Linker Flags 加上 -ObjC。
引入后,先驗(yàn)證引入是否成功,在UIViewController+MemoryLeak.m的+ (void)load方法中添加斷點(diǎn),app啟用時(shí)進(jìn)入該方法便引入成功。
引進(jìn) MLeaksFinder 的代碼后即可檢測(cè)內(nèi)存泄漏,但查找循環(huán)引用的功能還未生效。可以再手動(dòng)加入 FBRetainCycleDetector 代碼,然后把 MLeaksFinder.h 里的 //#define MEMORY_LEAKS_FINDER_RETAIN_CYCLE_ENABLED 1 打開。
MLeaksFinder 默認(rèn)只在 debug 下生效,當(dāng)然也可以通過 MLeaksFinder.h 里的 //#define MEMORY_LEAKS_FINDER_ENABLED 0 來手動(dòng)控制開關(guān)。