AFNetWorking 内存泄漏的问题 -- AFHTTPSessionManager --Instruments体检结果分享



今天用Instruments对APP做了下体检,结果如下:

1、CPU占用最大的一个加载动画,原因是这个加载动画用到了CoreGraphics核心绘图中的transform,不断改变UIView的形状,发现这个绘制还是很占CPU的,以后这种动画还是得慎用,影响APP性能;

2、虚拟内存的使用最大的是SDWebImage,可能本身我们的APP就图片内容最多;

3、内存泄漏问题:发现用到AFHTTPSessionManager的地方发生了很大的内存泄漏,每一次网络请求都会报错,而且都会一把很大的❌(如上图),就在网上搜索一下了,并进行了总结。原因是每次网络请求的时候都重新

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

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

static AFHTTPSessionManager *manager;

+ (AFHTTPSessionManager *)sharedManager {
    
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        // 初始化请求管理类
        manager = [AFHTTPSessionManager manager];
        manager.requestSerializer = [AFJSONRequestSerializer serializer];
        
        // 设置15秒超时 - 取消请求
        manager.requestSerializer.timeoutInterval = 15.0;
        // 编码
        manager.requestSerializer.stringEncoding = NSUTF8StringEncoding;
        // 缓存策略
        manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
        
        manager.responseSerializer = [AFJSONResponseSerializer serializer];
        // 支持内容格式
        manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/plain", @"text/javascript", @"text/json", @"text/html", nil];
    });
    return manager;
    
}


使用的时候就如下一句代码即可

AFHTTPSessionManager *manager = [ZLHttpTool sharedManager];

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值