iOS内存泄露可能出现的问题和解决工具

内存防止

1、Block,使用_weak声明一个代替self的新变量代替原先的self
__weak typeof(self) weakSelf=self;
self.block = ^(NSString *name){
    NSLog(@"arr:%@", weakSelf.arr);
};

自定义的block用copy修饰
weak修饰的会在内存不够的时候被释放

2、delegate,用weak关键字修饰
3、nstimer等需要手动释放的没有释放
4、关键字一定要注意
@property (nonatomic, copy) NSString *string0;//新建了一个对象,string最好用copy修饰,看自己的需求啦,注意一下别产生内存泄漏就好
@property (nonatomic, strong) NSString *string1;//指向同一个对象

解决

1、analyze工具
2、instruments ---- leaks工具
3、MLeaksFinder框架

pod进去就可以了,运行的时候连接上Xcode,retain的时候会在代码中打出断电。不连接Xcode,retain的话会显示出文字在弹窗中,表明循环引用在哪里

接手一个项目都是内存泄漏,我先用MLeaksFinder把能改的比如说关键字写的不对的,block的问题等等改了,到了后面实在看不出来了就用instruments,结果双击定位到友盟的和MJRefresh里面去了,看不懂

屏幕快照 2018-02-02 下午1.36.34.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,239评论 30 472
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,046评论 0 12
  • 冯·诺依曼体系:运算器 控制器 存储器 输入与输出 内存即存储器,用来存储指令与数据 注:哈佛体系与普林斯顿体系的...
    小李龍彪阅读 674评论 0 8
  • 面试题参考1 : 面试题[http://www.cocoachina.com/ios/20150803/12872...
    江河_ios阅读 1,765评论 0 4
  • iOS内存管理 概述 什么是内存管理 应用程序内存管理是在程序运行时分配内存(比如创建一个对象,会增加内存占用)与...
    蚊香酱阅读 5,772评论 8 119