如何修复 AFNetworking 3.1 中的内存泄漏?
Posted
技术标签:
【中文标题】如何修复 AFNetworking 3.1 中的内存泄漏?【英文标题】:How to fix memory leak in AFNetworking 3.1? 【发布时间】:2016-07-11 11:53:07 【问题描述】:我正在仪器中测试应用程序,因此下面的代码出现内存泄漏。请告诉我如何解决它。
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:configuration];
【问题讨论】:
是的,AFNetworking 框架中存在一些内存泄漏,您可以在方法结束时将“manager”对象设为 nil。因此,当应用再次请求它时,它将再次创建新的 @suhas 请检查我的答案。并请给予回应。 【参考方案1】:我不知道我是否迟到了,但我为那些碰到这个的人回答。这是预期的行为。完成会话后,您需要调用此invalidateSessionCancelingTasks:
。
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
self.manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
__weak typeof(self) welf = self;
[self.manager uploadTaskWithRequest:request fromFile:filePath progress:^(NSProgress * _Nonnull uploadProgress)
// progress block
completionHandler:^(NSURLResponse *response, id responseObject, NSError *error)
//Invalidate Session here
[welf.manager invalidateSessionCancelingTasks:YES];
// stuff needed to be done
];
【讨论】:
[welf.manager invalidateSessionCancelingTasks:YES];这里有什么好处?【参考方案2】:你可以试试这个代码:
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfiguration.HTTPMaximumConnectionsPerHost = 10;
self.manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:sessionConfiguration];
);
【讨论】:
以上是关于如何修复 AFNetworking 3.1 中的内存泄漏?的主要内容,如果未能解决你的问题,请参考以下文章
使用 AFNetworking 2.3.1 的自签名 SSL 证书
AFNetworking 2.0 中的 AFHTTPRequestOperationManager 如何传递 HTTPBody 标签