美文网首页iOS经验总结
afnetworking 内存泄漏问题

afnetworking 内存泄漏问题

作者: anny_4243 | 来源:发表于2017-03-24 18:18 被阅读795次

    原文:
    http://blog.csdn.net/maajian/article/details/53941929

    最近在写小项目的过程中发现app在运行过程中内存总是会增加,没有上限一样到五六十兆。然后本能的打开xcode的product--profile--leak 监测一下内存泄漏的地方。结果发生一堆内存泄漏,不过都是当我获取网络数据的时候。

    点击leaks--calltree ,勾选右边设置的Invert Call Tree和Hide System Libraries 查看内存泄漏的位置 。


    可以看到如下

    可以看出内存泄漏全是和AFNetWorking 有关 ,原因是manager类每一次网络请求都是初始化一个实例对象,但是该对象在工程中得不到释放,造成了内存泄漏。我也不知道AFNetWorking的作者是怎么想的。解决方法是创建一个继承与AFHTTPSessionManager 的单例对象,每次网络请求都调用这个单例方法。
    代码很简单 ,作为新手要记录每个错误。加油。

    AFmanager.h中

    import "AFHTTPSessionManager.h"

    @interface AFmanager :AFHTTPSessionManager
    +(AFHTTPSessionManager *)shareManager;
    @end

    AFmanager.m中
    +(AFHTTPSessionManager *)shareManager {
    staticAFHTTPSessionManager *manager=nil;
    staticdispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    manager = [AFHTTPSessionManagermanager];
    // manager.requestSerializer = [AFJSONRequestSerializer serializer];
    // manager.responseSerializer = [AFJSONResponseSerializer serializer];
    });

    return manager;
    

    }
    (将AFmanager.h 头文件写在pch文件中)在网络请求调用的地方

    AFHTTPSessionManager *manager = [AFmanagermanager];
    完成后,一切搞定。又少了一个坑。


    相关文章

      网友评论

        本文标题:afnetworking 内存泄漏问题

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