为什么要做app内存泄漏监控?
内存泄漏将导致app内存占用变大,成为iphone要kill App的时候优先考虑的对象.
监控内存泄漏的时机
- UIViewController调用”dismissViewControllerAnimated:”的时候
- UInavigationController调用”popToRootViewControllerAnimated:”等pop方法
- UITabbbarViewController、UIPageViewController、UISplitViewController+MemoryLeak需要释放时,对应的内嵌视图控制器也需要释放。
监控小技巧
创建一个block,block持有需要释放的视图的weak指针,当监测时机到时,执行这个block,如果weak指针不为nil,则该试图已经内存泄漏了。
监控对象
- 所有需要释放的视图控制器
- 视图控制器的View,及其每一层嵌套的Subview
视图树的记录
监测到内存泄漏后,为了方便开发定位到具体泄漏的视图,我们可以泄漏的视图树记录下来。
泄漏后如何及时提醒
泄漏后怎么提醒开发者比较合适呢。
- 发现泄漏马上把泄漏的视图树log打印出来
- 悬浮一个提醒款,显示当前泄漏的数量
- 命中断言(会阻断开发,容易被喷)