MLeaksFinder
MLeaksFinder 帮助你在开发时找到 iOS 应用中的内存泄漏。它可以自动找到 UIView 和 UIViewController 对象中的泄漏,并在发生泄漏时在 View-ViewController 栈中显示警报。此外,它还可以尝试使用 FBRetainCycleDetector 为泄漏对象查找保留周期。除了可以找到 UIView 和 UIViewController 对象中的泄漏之外,开发者可以将其扩展来查找其他类型对象的泄漏。
通讯
QQ 群:482121244
安装
pod 'MLeaksFinder'
MLeaksFinder 在执行 pod install
后生效,不需要添加代码或导入任何头文件。
警告:由于 Facebook 的 BSD-plus-Patents 许可,FBRetainCycleDetector 已从 podspec 中删除。如果想要使用 FBRetainCycleDetector 来查找保留周期,请在您的项目的 Podfile 中添加 pod 'FBRetainCycleDetector'
,并在 MLeaksFinder.h
中启用宏 MEMORY_LEAKS_FINDER_RETAIN_CYCLE_ENABLED
。
用法
MLeaksFinder 能够自动寻找 UIView 和 UIViewController 对象中的泄漏。当发生泄漏时,它将在其 View-ViewController 栈中显示提示泄漏的对象。
Memory Leak
(
MyTableViewController,
UITableView,
UITableViewWrapperView,
MyTableViewCell
)
对于上述示例,我们可以确认 MyTableViewController
、UITableView
和 UITableViewWrapperView
对象已成功释放,但 MyTableViewCell
对象没有。
静音断言
如果你的类被设计为单例模式,或者出于某种原因你的类的对象不应该被释放,请在你的类中重写 - (BOOL)willDealloc
并返回 NO。
- (BOOL)willDealloc {
return NO;
}
在其他对象中查找泄漏
MLeaksFinder 默认查找 UIView 和 UIViewController 对象中的泄漏。然而,你可以扩展它以在以 UIViewController 对象为根的整个对象图中查找泄漏。
- (BOOL)willDealloc {
if (![super willDealloc]) {
return NO;
}
MLCheck(self.viewModel);
return YES;
}