使用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跑一遍,再也没有红叉了 ^_^ 。

目录
相关文章
|
iOS开发
afnetworking 内存泄漏问题
afnetworking 内存泄漏问题
499 0
afnetworking 内存泄漏问题
|
7月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
2378 0
|
7月前
|
存储 缓存 NoSQL
内存管理基础:数据结构的存储方式
数据结构在内存中的存储方式主要包括连续存储、链式存储、索引存储和散列存储。连续存储如数组,数据元素按顺序连续存放,访问速度快但扩展性差;链式存储如链表,通过指针连接分散的节点,便于插入删除但访问效率低;索引存储通过索引表提高查找效率,常用于数据库系统;散列存储如哈希表,通过哈希函数实现快速存取,但需处理冲突。不同场景下应根据访问模式、数据规模和操作频率选择合适的存储结构,甚至结合多种方式以达到最优性能。掌握这些存储机制是构建高效程序和理解高级数据结构的基础。
783 1
|
7月前
|
存储 弹性计算 固态存储
阿里云服务器配置费用整理,支持一万人CPU内存、公网带宽和存储IO性能全解析
要支撑1万人在线流量,需选择阿里云企业级ECS服务器,如通用型g系列、高主频型hf系列或通用算力型u1实例,配置如16核64G及以上,搭配高带宽与SSD/ESSD云盘,费用约数千元每月。
777 0
|
存储 编译器 C语言
【C语言篇】数据在内存中的存储(超详细)
浮点数就采⽤下⾯的规则表⽰,即指数E的真实值加上127(或1023),再将有效数字M去掉整数部分的1。
1018 0
|
存储
共用体在内存中如何存储数据
共用体(Union)在内存中为所有成员分配同一段内存空间,大小等于最大成员所需的空间。这意味着所有成员共享同一块内存,但同一时间只能存储其中一个成员的数据,无法同时保存多个成员的值。
|
存储 C语言
数据在内存中的存储方式
本文介绍了计算机中整数和浮点数的存储方式,包括整数的原码、反码、补码,以及浮点数的IEEE754标准存储格式。同时,探讨了大小端字节序的概念及其判断方法,通过实例代码展示了这些概念的实际应用。
1114 1
|
存储 编译器
数据在内存中的存储
数据在内存中的存储
196 4