使用AFNetworking 3 内存泄露(转载)

简介: 原文地址:http://blog.csdn.net/d1w2hj/article/details/51793065在使用instruments做内存泄漏分析时,发现所有使用如下语句的地方都有内存泄漏,OMG:if(!_manager){_manager = [AFHTTPSessionManager manager];}stack overflow上查了下并没有找到好的解决方案,去github的AFN的issue区查了下,确实有几个人提问了,但是每人给出解决方案。

原文地址:http://blog.csdn.net/d1w2hj/article/details/51793065

在使用instruments做内存泄漏分析时,发现所有使用如下语句的地方都有内存泄漏,OMG:

if(!_manager){

_manager = [AFHTTPSessionManager manager];

}

stack overflow上查了下并没有找到好的解决方案,去github的AFN的issue区查了下,确实有几个人提问了,但是每人给出解决方案。

img_7c868174fedc549b627cc33720a2aca2.png
img_36bcc21eb6c546a5cc691b1b7719b2e7.png

没人解决就算了,结果这货自己莫名其妙没泄漏了,不继续探究为什么上次有内存泄漏。

img_c4f248226c62b583609b77d43957f451.png

无奈只能找度娘了,还好找到了解决办法,有前辈给出了解决方案:

img_c47abf1ba8c2841751a90c3476bdb3e6.png

但是我所用到的网络请求不是很复杂,不想再新建类去写单例了,就把单例放在了AppDelegate中,用到的时候在通过AppDelegate拿。因为需要用到AFHTTPSessionManager和AFURLSessionManager,所以就各写一个单例方法。

static AFHTTPSessionManager *manager ;static AFURLSessionManager *urlsession ;-(AFHTTPSessionManager *)sharedHTTPSession{    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        manager = [AFHTTPSessionManager manager];        manager.requestSerializer.timeoutInterval =10;    });returnmanager;}-(AFURLSessionManager *)sharedURLSession{    static dispatch_once_t onceToken2;    dispatch_once(&onceToken2, ^{        urlsession =[[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];    });returnurlsession;}

获得AFHTTPSessionManager和AFURLSessionManager单例

//AFHTTPSessionManagerAppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication]delegate];AFHTTPSessionManager *manager = [app sharedHTTPSession];//AFURLSessionManagerAppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication]delegate];AFURLSessionManager *urlsession = [app sharedURLSession];

全部替换完之后再用 instruments跑一遍,再也没有红叉了 ^_^ 。

目录
相关文章
|
4月前
|
XML NoSQL Linux
内存泄漏专题(3)内存泄漏调试神器valgrind
内存泄漏专题(3)内存泄漏调试神器valgrind
25 0
|
5月前
|
JavaScript Java
JS内存泄漏是什么 什么情况下会出现内存泄漏 内存泄漏怎么解决
JS内存泄漏是什么 什么情况下会出现内存泄漏 内存泄漏怎么解决
17 0
|
6月前
|
Android开发 iOS开发
[√]cocos2dx 内存泄露
[√]cocos2dx 内存泄露
41 0
|
11月前
|
Java 测试技术 C++
log4qt内存泄露问题,heob内存检测工具的使用
log4qt内存泄露问题,heob内存检测工具的使用
|
JavaScript 前端开发 Java
autojs之内存泄露
内存泄漏的概念
1092 0
|
iOS开发
afnetworking 内存泄漏问题
afnetworking 内存泄漏问题
329 0
afnetworking 内存泄漏问题
|
Android开发
在安卓项目中使用 Leakcanary 内存泄露检测工具
使用 (一)导入 导入 Leakcanary-watcher、Leakcanary-analyzer、Leakcanary-android, 在当前项目的引用 Leakcanary-android 这个 library。
209 0
|
网络协议 API
从一个AFNetworking循环引用说起
本文分析使用代码是AFNetworking 3.2.1 最近使用Instruments中的Leaks分析项目内存泄露,发现了一个AFNetworking的循环引用。
1400 0
|
监控 Java Android开发
Android内存泄漏检测工具:LeakCanary
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/79582082 一、简介 LeakCanary是一个Square开源的内存泄漏分析工具,如果检测到某个activity有内存泄漏,LeakCanary就会自动显示一个通知。
1995 0