主要是基于项目代码量越来越多,担心自己可能在无意间,没有释放对象,或者某些情况下对已经不存在的对象执行操作导致崩溃,这里记录下一些常用的检测方法.
1. 僵尸对象的检测:
Pasted Graphic 1.png当有僵尸对象时,运行代码,可以看到(并不是百分百检测的到):
Pasted Graphic 2.png
2. 检测循环引用导致的内存泄露
-
通过product —>preform —> Leaks
Pasted Graphic 3.png
Pasted Graphic 4.png
能够很明显的看到了一个循环的引用;
-
通过第三方工具:
MLeaksFinder
pod导入即可,不需要调用
pod 'MLeaksFinder'
运行代码后,如果发现内存泄露,会有弹框提醒:
Pasted Graphic 5.png
- 还一种是采用手动添加析构函数,查看是否会被调用
//析构函数
- (void) dealloc {
NSLog(@"dealloc");
}
网友评论