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];
}
操作の成功ブロックが実行された後、files( responseObject
) が解放されていないように見えます。これが、メモリ フットプリントを継続的に増加させている原因ですか? これは正しいです?AFNetworking と operationQueue を意図したとおりに使用していますか?