关于AFNetWorking3.0内存泄漏的问题

问题:对于基于AFNetWorking3.0的项目,在未处理直接通过AFN3.0进行网络请求,在leaks测试下会出现内存泄露的问题。

原因:观察发现每次发生泄漏的地方都是 “AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];”中,每次网络请求都初始化一个实例对象,但是未得到释放,造成了内存泄漏。

解决办法:解决方法是创建一个继承AFHTTPSessionManager的单例对象,每次网络请求都调用这个单例方法。

(下面是写在delegate中的办法,需要用到网络请求时别的不变,manager的初始化改为使用“AFHTTPSessionManager *manager = [AppDelegate shareManager];”即可)

代码如下

.h头文件中

#import "AFNetworking/AFNetworking.h"

/**

*  单利方法

*

*  @return 实例对象

*/

+(AFHTTPSessionManager*)shareManager;

.m文件中

#pragma mark - shareManager

/**

*  获得全局唯一的网络请求实例单例方法

*

*  @return 网络请求类的实例

*/

+(AFHTTPSessionManager *)shareManager {

static AFHTTPSessionManager *manager=nil;

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

manager = AFHTTPSessionManager manager];

});

return manager;

}

你可能感兴趣的:(关于AFNetWorking3.0内存泄漏的问题)