AFNetworking内存泄漏

问题描述 投票:-1回答:3

我使用下面的代码开始下载

AFURLSessionManager *downloadManager1  = [[AFURLSessionManager alloc] initWithSessionConfiguration:NSURLSessionConfiguration.defaultSessionConfiguration];


NSURLSessionDownloadTask *downloadTask;
downloadTask=[downloadManager1 downloadTaskWithRequest:request progress:nil

        destination:^NSURL *(NSURL *targetPath, NSURLResponse *response){

        NSURL *aURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];

        return  [aURL URLByAppendingPathComponent:[response suggestedFilename]];

    }completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {

    }
];
[downloadTask resume];

enter image description here

它报告了内存泄漏,我检查了上面的代码但是找不到任何地方是错的,

您的评论欢迎

ios objective-c macos cocoa afnetworking
3个回答
0
投票
invalidateSessionCancelingTasks:

这是已知和记录的行为。完成会话后,调用invalidateSessionCancelingTasks:。对于大多数应用程序而言,这不是问题,这些应用程序在应用程序的生命周期内保留单个会话。

https://github.com/AFNetworking/AFNetworking/issues/1528#issuecomment-26887778


0
投票

你有两个指针,一个是downloadManager1,另一个是NSURL对象。根据代码中调用的位置,我怀疑有一个永久性的strong引用其中一个。尝试将NSURL从指针转换为实际对象,它将按值复制,并检查以确保在工作完成时释放downloadManager


0
投票

我认为在创建经理时会发生泄漏。 NSURLSession保留对委托的保留引用。如果您只管理一次管理器,它可能会有所帮助。我不确定您的数据任务代码被调用了多少次。

结帐https://github.com/AFNetworking/AFNetworking/issues/3787

© www.soinside.com 2019 - 2024. All rights reserved.