内存泄漏检测原理:
内存分类:
1. 泄漏内存
2. 废弃内存:无用场景,Arc时代多见于循环引用
3. 缓存内存
Leaks检测内存泄漏
Allocations检测废弃内存,通过对比屏幕快照的方式发现内存的便捷化
过往的开源库:
HeapInspector-iOS:改进Allocations检测,hook方法alloc/dealloc/retain/release等记录生命周期,需要重复操作,且易有延迟。
MSLeakHunter:只检测UIViewController和UIView,hook-viewDidDisappear方法,但该方法不准确。需要结合实际操作去分析
MleaksFinder:对NSObject增加一个willDealloc方法,在内部使用弱指针调用一个方法,如果该界面释放了,方法就不会执行。AOP-Hook-界面pop和dismiss。遍历所有对象。单例需要自己重载方法,returnNO;
```
- (void)willDealloc {
id weakself;
dispatch_afert_3*sec {
[weakself noDealloc];
}
}
- (void)noDealloc {
NSLog(@"没有释放");
}
```