2012-11-20 4 views
3

AFC를 사용할 때 ARC를 사용하고 있으며 내 응용 프로그램에 여러 파일 (10000+)을 다운로드하는 데 문제가 있습니다. 나는 각 AFHTTPRequest를 생성하고 실행을 위해 큐에 넣는다. 이 도구를 사용하여 실행하면 모든 파일이 다운로드 될 때까지 메모리 사용이 증가하고 증가하는 것을 볼 수 있습니다. 그런 다음에 만 모든 메모리가 릴리스됩니다. 이것은 시뮬레이터에서는 지속되지만 iOS 장치에서 실행 중일 때 충돌합니다. 다음은 AFNetworking 여러 파일 메모리 풋 프린트를 다운로드 중

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

그러면 해결책은 무엇입니까? – Fab1n

답변

0

for 루프에 @autoreleasepool을 넣을 수 있습니다.

+0

이것이 효과가 있다고 생각하지 마십시오. 파일은 비동기 적으로 성공 블록으로 전달됩니다. for 루프 안에 autorelease pool을 생성하는 것은 도움이되지 않습니다. –

관련 문제