美文网首页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容易出现内存泄露的地方

    背景:做完了一个项目后,当然就要跑一下Instruments工具的Leaks功能,检查一下App有没有出现内存泄露...

  • NSTimer内存问题分析及优雅使用姿势

    NSTimer特别容易出现内存泄露问题,这篇文章会分析一下为什么会出现内存泄露,以及如何优雅的解决这个问题。 NS...

  • iOS 性能优化

    列举在项目开发中可能遇到的优化点 1、内存泄露检测可能出现内存泄露的地方:循环引用,block强引用,NSTime...

  • 记一次内存泄露优化

    前言 dialog引起的内存泄露 最近在优化项目发现好几个地方出现了内存泄露 我封装了一个TipDialog,用在...

  • 内存优化

    内存优化主要是分析内存泄露和内存溢出。将从内存是怎么分配,内存怎么出现泄露和溢出,用工具判断什么情况出现泄露,找出...

  • [Android]面试相关-内存泄露

    内存泄露在项目中很容易出现,但是只要细心就很容易找到,不过每一次的内存泄露查找都要耗费一定的时间,所以我们得明白什...

  • Android关于内存泄露

    内存泄露: 说到内存泄露,就不得不提到内存溢出,这两个比较容易混淆的概念,我们来分析一下。 内存泄露: 程序在向系...

  • 如何防止内存泄漏

    内存泄露 说到内存泄露,就不得不提到内存溢出,这两个比较容易混淆的概念,我们来分析一下。 内存泄露:程序在向系统申...

  • Java虚拟机—Java8内存模型JVM(整理版)

    1.概述 对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要手动释放内存,不容易出现内存泄露和内存...

  • UITextView内存泄露

    前言:今天用leak测试工程的时候出现内存泄露了,后来找到是UITextView出现内存泄露了,很奇怪明明是ARC...

网友评论

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

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