僵尸对象,内存泄露的定位

主要是基于项目代码量越来越多,担心自己可能在无意间,没有释放对象,或者某些情况下对已经不存在的对象执行操作导致崩溃,这里记录下一些常用的检测方法.

1. 僵尸对象的检测:

Pasted Graphic 1.png

当有僵尸对象时,运行代码,可以看到(并不是百分百检测的到):


Pasted Graphic 2.png

2. 检测循环引用导致的内存泄露

  1. 通过product —>preform —> Leaks
    Pasted Graphic 3.png

    Pasted Graphic 4.png

    能够很明显的看到了一个循环的引用;

  2. 通过第三方工具: MLeaksFinder
    pod导入即可,不需要调用

pod 'MLeaksFinder'

运行代码后,如果发现内存泄露,会有弹框提醒:


Pasted Graphic 5.png
  1. 还一种是采用手动添加析构函数,查看是否会被调用
//析构函数
- (void) dealloc {
    NSLog(@"dealloc");
}

你可能感兴趣的:(僵尸对象,内存泄露的定位)