AFNet工作下载多个文件的内存占用



我正在使用 ARC,在使用 AFNetworking 时在我的应用程序中下载多个文件 (10000+) 时遇到问题。我正在创建每个AFHTTPRequest,然后将它们排队等待执行。当我使用仪器运行它时,我可以看到内存使用量不断增加,直到下载了所有文件,然后才释放所有内存。这在模拟器上幸存下来,但在 iOS 设备上运行时崩溃。

下面是我正在做的事情的示例代码

for (int i = 0; i < NUM_OF_FILES_TO_DOWNLOAD; i++) {
    _imageCounter++;
    [self downloadFile:i];
}
- (void)downloadFile:(NSUInteger)num
{    
    NSString *fileURL = @"file/%d/", num];
    NSURLRequest *url = [self.httpClient requestWithMethod:@"GET" path:fileURL parameters:nil];
    AFHTTPRequestOperation *requestOperation = [_httpClient HTTPRequestOperationWithRequest:url success:^(AFHTTPRequestOperation *operation, id responseObject) {
     ...
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
     ...
    }];
    [_httpClient enqueueHTTPRequestOperation:requestOperation];    
}

似乎在执行操作成功块后文件(responseObject)没有被释放,这就是不断增加内存占用的原因?这是对的吗?我是否按预期使用 AFNetworking 和 operationQueue?

你可能想在你的for循环中放一个@autoreleasepool。

最新更新