Ich benutze die Klasse NSURLConnection
, um eine große Datei in meiner iPhone-Anwendung herunterzuladen, aber es stürzt immer wieder ab, weil es zu viel Speicher verbraucht. Ich mache die übliche NSURLConnection
Verwendung, um die empfangenen Daten an ein NSMutableData
Objekt anzufügen.Wie kann ich eine große Datei mit dem iPhone SDK herunterladen und Speicherprobleme vermeiden?
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[self.fileData appendData:data];
}
Dann, nachdem ich die ganze Datei Abschluss des Downloads, ich spare es zu einer lokalen temporären Datei, und als kartiert Datei wie folgt lesen:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// save the downloaded data into a temporary file
NSString *tempPath = NSTemporaryDirectory();
NSString *tempFile = [tempPath stringByAppendingPathComponent:@"temp.pdf"];
[self.fileData writeToFile:tempFile atomically:YES];
NSData *mappedData = [NSData dataWithContentsOfMappedFile:tempFile];
NSURL *baseURL = [NSURL URLWithString:@"http://mydomain.com"];
[webView loadData:mappedData MIMEType:@"application/pdf" textEncodingName:@"UTF-8" baseURL:baseURL];
}
Was kann ich hier verbessern, diese zu vermeiden Speicherbelegungsprobleme?
mit schrieb ich eine Bibliothek für das, ich bin es hier setzen gehofft, dass es für einige Leute nützlich sein wird, oder sie inspirieren, ihre eigene Lösung zu schreiben. Wenn Sie damit natürlich einverstanden sind. https://github.com/thibaultCha/TCBlobDownload – thibaultcha