在使用Xcode的Leaks时,一进程序就出现了泄漏.....打击不小。后来定位到是因为
定位错误的位置
心想,AFN的单例也报错,这怎么改?
于是Google,找到这篇文章使用AFNetworking 3 内存泄露
说是ARC机制中,SessionManager没创建但是没有地方释放。解决方法就是讲SessionManager改为单例即可。但是单例也会一直存在,没有泄露但是却占用内存。
觉得可以将AFHTTPSessionManager的类方法改为单例.....(菜鸟个人理解)
这是我解决部分代码,就是改个单例
+ (instancetype)sharedManager {
static AFNRequest *afnManager;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
afnManager = [[self alloc] init];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer.timeoutInterval = 10.f;
afnManager.manager = manager;
});
return afnManager;
}
网友评论