iOS 内存泄漏--AFN问题

iOS 内存泄漏--AFN问题_第1张图片

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

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

iOS 内存泄漏--AFN问题_第2张图片
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的内存泄漏基本上解决完毕!


iOS 内存泄漏--AFN问题_第3张图片
修复AFN后的截图

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

你可能感兴趣的:(iOS 内存泄漏--AFN问题)