項目中用cocopods
引入了MLeaksFinder進(jìn)行內(nèi)存泄漏的檢查友酱,但是打debug
包的時候有時候不想去開啟這個功能讓別人看到蒿褂,又不想去改MLeaksFinder的源碼擂送。那么怎么才能實現(xiàn)呢楞泼?
很簡單甸各,我們可以看到源碼中有一個NSObject的分類
忽冻,它給每一個NSObject
的類及子類添加了一個willDealloc
方法痴腌,他在進(jìn)行內(nèi)存泄漏檢查的時候都是在willDealloc
這個方法里去進(jìn)行的調(diào)用雌团。并且我們發(fā)現(xiàn),當(dāng)我們的項目中出現(xiàn)內(nèi)存泄漏的時候士聪,我們的控制臺會打印這么一句
Possibly Memory Leak In case that.....
這里它就是告訴你锦援,如果你確定MLeaksFinder提示的這個類沒有發(fā)生內(nèi)存泄漏,你可以override
這個類的-willDealloc
這個方法剥悟,使其returning NO
就可以不提示了灵寺。
那么既然是這么簡單就可以忽略這個類的內(nèi)存泄漏檢查,我們?nèi)绾我淮涡院雎运械念惸兀?br>
hook方法唄区岗。直接hook NSObject的willDealloc
方法就行了略板。因為OC是編譯型,在編譯的時候慈缔,willDealloc
已經(jīng)添加到了NSObject的方法列表里叮称。在運行時執(zhí)行l(wèi)oad方法,就可以成功執(zhí)行方法交換了藐鹤。所有如果你有疑問load的時候怎么會知道NSObject的分類已經(jīng)執(zhí)行并添加了方法呢瓤檐。這就是原因所在啦。
有啥想說的娱节,歡迎留言評論挠蛉。互相學(xué)習(xí)肄满。