美文网首页iOS开发总结
iOS 内存泄漏--AFN问题

iOS 内存泄漏--AFN问题

作者: 学习abc | 来源:发表于2019-07-24 16:43 被阅读3次

    自从ARC(自动内存管理机制)出来后,iOS开发工程师在内存管理方面节省了大量的精力和时间,不过不代表我们写的代码不会产生内存泄漏,有时候很多框架使用起来很方便,但是也需要注意他们的使用方法,不然就可能导致内存泄漏,今天来说说iOS主流的AFN网络请求框架!

    那么它在什么情况下会造成内存泄漏呢?

    AFN内存泄漏截图

    如上图造成内存泄漏的主要有两个一个是AFN导致的,还有一个就是OpenUDID框架。

    那么造成AFN内存泄漏的是什么呢?

    因为[AFHTTPSessionManager manager],它只是一个类方法,并不是单利,所以需要自己创建一个单利方法,避免每次请求都创建。

    错误代码如下:这句是造成内存泄漏的罪魁祸首

    if (client == nil) {     

        client = [AFHTTPSessionManager manager];

    }

    应该修改成这样:

    +(AFHTTPSessionManager *)sharedAFNManager{

        static dispatch_once_t onceToken;

        dispatch_once(&onceToken, ^{

            manager = [AFHTTPSessionManager manager];         manager.requestSerializer.timeoutInterval = 10;

        });

        return manager;

    }

    ...​

    +...{

    client = [self sharedAFNManager];

    }

    这样调用就解决了AFN内存泄漏的问题,修改后如下图,关于AFN的内存泄漏基本上解决完毕!

    修复AFN后的截图

    喜欢的可以关注个人的微信公众号:IT科学技术,关注不迷路,大家的支持是我前进的动力!

    相关文章

      网友评论

        本文标题:iOS 内存泄漏--AFN问题

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