我正在使用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?
答案 0 :(得分:0)
你可能想在你的for循环中放一个@autoreleasepool。