美文网首页
AFNetworking 内存泄漏及其解决办法

AFNetworking 内存泄漏及其解决办法

作者: 其实你懂De | 来源:发表于2018-05-07 17:26 被阅读170次

    今天闲着没事,利用 Xcode 的 Instruments中 leaks 工具检查了一下项目内存泄漏情况。高高兴兴来检查,mmp,第一个是绿✘,其他都是 ❌,蒙蔽了。这些❌ 都是内存泄漏。OK ,重头开始。
    我想大家对这个工具也不陌生了.都会怎么使用了吧,我发现 callTree 基本都是Af报的内存泄漏,在网看了好多资料。看了一下源码,原来是我们每次网络请求是都会调用:

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];

    创建了一下,导致接口请求完之后一直没有得到释放。最后把AFHTTPSessionManager这个对象我做成了单例的,也就是每次请求接口的时候都是用的一个manager。改完之后调试OK,之前的❌都不见了。还是有效果的,下面把单例创建的代码贴一下,记录一下。

    #import "JYJHTTPTool.h"
    static AFHTTPSessionManager *manager;
    
    
    +(AFURLSessionManager *)sharedManager {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            manager = [AFHTTPSessionManager manager];
            manager.requestSerializer = [AFHTTPRequestSerializer serializer];
            // 缓存策略
            manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
            //设置超时时间
            [manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
            manager.requestSerializer.timeoutInterval = 30.f;
            [manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];
            // 4. 设置响应数据类型
            
            [manager.responseSerializer setAcceptableContentTypes:[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/css",@"text/plain", @"application/javascript",@"image/jpeg", @"text/vnd.wap.wml", @"application/x-javascript",@"image/png", nil]];
            [manager.requestSerializer setValue:@"application/x-www-form-urlencoded;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
        });
        return manager;
    }
    

    然后在自己的网络封装里面把 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 换成 AFHTTPSessionManager *manager = [JYJHTTPTool sharedManager];就OK啦! ❌没了。有问题可以大家一起讨论!

    相关文章

      网友评论

          本文标题:AFNetworking 内存泄漏及其解决办法

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