Сбой при загрузке 100 изображений с помощью NSThread iPhone - PullRequest
0 голосов
/ 08 августа 2011

В настоящее время я работаю над журнальным приложением для iPhone, которое загружает его содержимое из Интернета.Страницы журнала представлены в графическом формате и содержат около 120 страниц.

Это мое решение проблемы.

- (void) downloadDergiPages {

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

NSArray *resourcePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [resourcePaths objectAtIndex:0];
documentsDirectory = [documentsDirectory stringByAppendingPathComponent:@"Dergilerim"];
documentsDirectory = [documentsDirectory stringByAppendingPathComponent:indirilenSayi];


for (int i=1; i<=numberOfPages; i++) {

    NSString *url = [NSString stringWithFormat:@"%@getdergipage?dergikey=%@&page=%d", [RepositoryInfo getHostName], indirilenDergi, i];
    NSLog(@"%@", url);

    NSData *receivedData =  [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]];

    NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.png",i]];
    [receivedData writeToFile:path atomically:YES];
    [receivedData release];

    [self performSelectorOnMainThread:@selector(updateProgress:) withObject:[NSNumber numberWithInt:i] waitUntilDone:YES];
}


[self performSelectorOnMainThread:@selector(removePopupView) withObject:nil waitUntilDone:YES];
//[self removePopupView];

[pool release];
} 

Хотя этот фрагмент кода работает в приложении iPad без проблем, он вызываетПриложение вылетает после окончания загрузки 44-й страницы в iPhone.Это из-за проблем с памятью, как я понимаю из консоли журнала.Я просто хочу получить изображения и сохранить на диск один за другим.Я освобождаю все отчисления "Receivedata".В чем может быть проблема с этим кодом и как я могу заставить его работать?

Заранее спасибо ..

Ответы [ 2 ]

1 голос
/ 08 августа 2011

Используйте API ASIHTTPRequest для загрузки.

0 голосов
/ 08 августа 2011

Вы должны использовать NSURLConnection

путем сохранения фрагментов данных на диск каждый раз, когда вы получаете их с помощью метода делегата: connection: didReceiveData:

...