MLeaksFinder可以帮助您在开发阶段快速找出iOS应用程序中的内存泄漏。它能够自动发现UIView和UIViewController对象的内存泄漏,并在发生内存泄漏时,在泄漏对象的View-ViewController堆栈上显示一个警告。此外,使用FBRetainCycleDetector尝试分析泄漏对象的引用循环。除了在UIView和UIViewController对象中查找泄漏之外,开发者还可以扩展它以在其他类型的对象中查找泄漏。
QQ群组:482121244
pod 'MLeaksFinder'
在运行pod install
之后,MLeaksFinder才会生效,不需要添加任何代码或导入任何头文件。
MLeaksFinder可以自动查找UIView和UIViewController对象的内存泄漏。当发生内存泄漏时,它会在泄漏对象的View-ViewController堆栈上显示一个警告。
Memory Leak
(
MyTableViewController,
UITableView,
UITableViewWrapperView,
MyTableViewCell
)
在上述示例中,我们确信MyTableViewController
、UITableView
和UITableViewWrapperView
的实例已经被成功释放,而MyTableViewCell
的实例没有被释放。
MLeaksFinder还可以尝试使用FBRetainCycleDetector查找泄漏对象的引用循环。
Retain Cycle
(
"-> MyTableViewCell ",
"-> _callback -> __NSMallocBlock__ "
)
从输出中我们知道,MyTableViewCell
对象有一个名为_callback
的__strong
实例变量,其类型为__NSMallocBlock__
。同时,该_callback
也有一个指向MyTableViewCell
的__strong
引用。
如果您的类被设计为单例类,或者由于某些原因,您的类不应该被释放,请在您的类中重写- (BOOL)willDealloc
方法并返回NO。
- (BOOL)willDealloc {
return NO;
}
MLeaksFinder默认在UIView和UIViewController对象中查找内存泄漏。但是,您可以通过扩展它来在一个基于UIViewController对象的整个对象图中查找内存泄漏。
- (BOOL)willDealloc {
if (![super willDealloc]) {
return NO;
}
MLCheck(self.viewModel);
return YES;
}