美文网首页
iOS内存泄漏的情况

iOS内存泄漏的情况

作者: 雾霭天涯 | 来源:发表于2019-09-26 16:42 被阅读0次

    ARC 总结了一下控制器被强引用不走dealloc的原因无非就是三中情况:
    一.block块使用不当。因为block会对方法中的变量自动retain一次。请检查控制器中block代码。(我的就是因为这没有走dealloc)
    二.NSTimer没有销毁。在viewWillDisappear之前需要把控制器用到的NSTimer销毁。
    三.控制器中的代理属性一定要是弱引用,不要强引用。
    MRC情况比较多一点
    局部变量创建后要release
    全局变量在dealloc中既要release,也要置为nil

    使用label,文字提示,发现问题出现的地方 定位
    内存泄漏的分析方法:dealloc,内存图,静态分析,leak分析
    泄漏的原因:ARC中多是:NSTimer delegate block
    方法分析:通过屏蔽所有代码,分析是类的内部还是外部导致的泄漏
    修改其父类,查看是外部创建还是父类导致的内存泄漏
    依次可以通过屏蔽代码,来最终确定泄漏的地方

    懒加载方式创建的对象释放
    MRC懒加载方式创建的对象,在dealloc中释放时,[_lbTitle release]; _lbTitle = nil;,使用_xx 而不要使用self.xx,否则会重新调用get方法,导致崩溃

    使用
        self.lbTitle.frame = CGRectMake(0, 0, 10, 10);
    创建懒加载
    -(UILabel*)lbTitle
    {
        if (_lbTitle != nil)
            return _lbTitle;
        _lbTitle = [[UILabel alloc] init];
        _lbTitle.textColor = [UIColor whiteColor];
        _lbTitle.backgroundColor = [UIColor clearColor];
        _lbTitle.adjustsFontSizeToFitWidth = YES;
        [self addSubview:_lbTitle];
        return _lbTitle;
    }
    释放
        [_lbTitle release];
        _lbTitle = nil;
    

    相关文章

      网友评论

          本文标题:iOS内存泄漏的情况

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