当前位置:   article > 正文

iOS内存泄漏检测_ios 内存泄漏检测工具

ios 内存泄漏检测工具

项目开发有一段时间了,一直没有时间检测内存情况,今天检测了一下内存,综合了几种情况

一、内存泄漏检测方法

(1) 可以使用系统自带的leaks,在测试app的时候打开leaks,很准确哦
(2)也可使用第三方,可以检测某个UIViewController和UIView中内存泄漏,推荐使用轻量级的内存泄漏检测工具。

1、MLeaksFinder
介绍:MLeaksFinder:精准 iOS 内存泄露检测工具

2、PLeakSniffer
介绍:iOS内存泄漏自动检测工具PLeakSniffer

二、常见内存泄漏情况

1、UIViewController 和 子UIView中双向持有对方
@interface MyViewController: UIViewController   
     //1.MyViewController 中强引用 childView 
    @property (nonatomic, strong) ChildView *childView;    
@end
----------------------------------------------------- 
@interface ChildView : UIView
    @property (nonatomic, strong) MyViewController *controller;
    -(instancetype)initWithController:(MyViewController *)controller;
@end
//implement
    -(instancetype)initWithController:(MyViewController *)controller{
        self = [super init];
        if(self){
            //2.这一步让View,强引用 MyViewController
            self.controller = controller;
        }
        return self;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

如上代码所示,1,2中让两个对象双向强引用,导致两者都不会被释放。
解决方案:
把2这一步换成weak

@property (nonatomic, weak) MyViewController *controller;
  • 1
2、Delegate循环引用

还是引用上面的案例,这次我们改成delegate版本

@interface MyViewController: UIViewController 
//1.MyViewController 中强引用 childView 
    @property (nonatomic, strong) ChildView *childView; 
@end 
//
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/478196
推荐阅读
相关标签
  

闽ICP备14008679号