美文网首页IOS-AFNetworking
AFNetworking3.x容易出现内存泄露的地方

AFNetworking3.x容易出现内存泄露的地方

作者: 挣扎在编码世界 | 来源:发表于2016-03-25 16:58 被阅读5115次

    背景:做完了一个项目后,当然就要跑一下Instruments工具的Leaks功能,检查一下App有没有出现内存泄露的问题。结果,原以为不会这么容易就出现内存泄露的问题,一下就出现了好几个红叉。只能很捉急地去找问题答案了……

    一般来说,使用AFNetworking3.x 很容易就是用了[AFHTTPSessionManager manager]类方法来获取AFHTTPSessionManager实例(不知道别人是怎么获取,之前我就是这么获取的):

    manager这个类方法很容易导致出现内存泄露:

    会很明显的看到[AFHTTPSessionManager manager]出现,双击该行,进去会定位到源代码位置:

    manager类方法的实现可以看到,每一次返回的是一个实例分配内存和初始化的过程,也就是每一次网络请求都是一次初始化一个实例,并且该实例没有得到释放,导致了出现内存泄露。

    重新查看了一下AFNetworking的DEMO,会发现作者并不是直接调用manager这个类方法(就有点想不明白manager有什么作用),而是通过创建一个继承AFHTTPSessionManager的单例实例AFAppDotNetAPIClient,通过这个实例来调用请求方法。

    再次使用Leaks功能进行检测,很高兴,没有出现内存泄露问题。如果在使用第三方库出现什么问题,其实看一下作者写的Demo或者是issue集,都能找到答案。感谢开源项目的大牛们

    相关文章

      网友评论

        本文标题:AFNetworking3.x容易出现内存泄露的地方

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