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