美文网首页
APP内存泄漏检测

APP内存泄漏检测

作者: edison0428 | 来源:发表于2018-05-10 16:33 被阅读14次

内存泄漏检测

检测内存泄漏的几种方式

静态检测分析

静态检测分析又分为两种,一种是手动静态分析,一种是自动静态分析

  • 手动


    image.png
  • 自动


    image.png

设置成YES,每次编译的时候都会帮你检测分析,上线的时候改成默认

静态分析的功能有限,只是静态的帮你分析,app运行期间发生的事它并不能帮你检测,比如循环引用什么的并不能检测出来

动态检测方法(instrucment工具)

这种方式比静态分析要好,但也不一定完全能检查出内存泄漏等问题

析构打印
-(void)dealloc{
    
    NSLog(@"%s",__func__);
}

其实就是看控制器有没有走dealloc,推荐开发过程中使用,内存泄漏主要也要在开发过程预防发生,所以正在开发的过程中根据析构打印是一件比较简单方便的事,也是一个好习惯,比较实用吧
如果走了dealloc,那么当前控制器肯定是没内存泄漏了,但是里面的对象有没有就确定了

第三方工具

自动化检测工具

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM enqueue:]: unrecognized selector sent to instance 0x60000024ef40'

在buddle Seeting 里面的Other Linker Flags 中添加-ObjC就可以了。

MLeaksFinder
项目直接pod就行了

简单小结:
1.在使用block时,如果block内部需要访问self的方法 属性 或者实例变量应当使用weakself
2.如果在block内需要多次访问self,则需要使用strongself
3.如果在block内部存在多线程环境访问,则需要使用strongself
4.block本身不存在多线程之分,block执行是否是多线程,取决于当前的持有者是否是以多线程的方法来调用他

但是点击发起微信支付

相关文章

网友评论

      本文标题:APP内存泄漏检测

      本文链接:https://www.haomeiwen.com/subject/hnttdftx.html