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ā)者無需打開 Instrument 等工具紊撕,也無需為了找內(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安裝后生效,無需添加任何代碼或?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)存泄露了般眉,無需修改任何業(yè)務(wù)邏輯代碼了赵,而且只在 debug 下開啟,完全不影響你的 release 包甸赃。
把 MLeaksFinder 目錄下的文件添加到你的項(xiàng)目中,就可以在運(yùn)行時(shí)(debug 模式下)幫助你檢測(cè)項(xiàng)目里的內(nèi)存泄露了埠对,無需修改任何業(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)粮彤。