Ich habe Probleme mit dem Herunterladen von 5 MB Datei, dauert es mehr als 2 Minuten auf iPhone 5 mit iOS 6.1.NSURLConnection sehr lange herunterladen
Mit iPhone 4S mit der gleichen iOS-Version dauert es nur 10 Sekunden, beide verwenden WiFi.
Ich habe versucht, verschiedene Cache-Richtlinien und Timeout-Intervall von NSURLRequest, es hat nichts geändert, es dauert immer noch lange Zeit. Der Download erfolgt über HTTP.
Ich benutze NSURLConnection Klasse, vor dem Download dieser "großen" Datei Ich lade zwei andere herunter.
Weiß nicht, was sonst noch wichtig sein kann, um die Zeit zu reduzieren.
Vielen Dank im Voraus.
Code:
@interface MyClass : NSObject <NSURLConnectionDelegate>
{
@private id delegate;
NSURLConnection *connection;
NSMutableData* responseData;
//...
}
#import "MyClass.h"
@implementation MyClass
-(void)getObj1:(id)delegateObj
{
delegate = delegateObj;
NSString *url = @"...";
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:120.0];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if(connection)
{
responseData = [NSMutableData data];
}
}
-(void)getObj2:(*String)somesString
{
NSString *url = @"...";
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:120.0];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if(connection)
{
responseData = [NSMutableData data];
}
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
//....
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[responseData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
if(firstRequest)
{
//save data from first request and set responseData clear
[self getObj2:@"..."];
}
}
und andere, ohne etwas Besonderes, ich hoffe, diese
genug sein, werde ich diesen Beitrag https://devforums.apple.com/message/754875#754875 gefunden haben, aber immer noch nicht gut für mich funktioniert. Aber jetzt verstehe ich diese seltsame Situation besser.
Ihr Code ist wichtig. Wenn Sie angeben könnten, wie Sie die Anforderung erstellt und gestartet haben, und die Delegatmethoden. –
Irgendeine Idee? Vielleicht hilft dieser Link von meiner Bearbeitung, ich habe keine Ideen mehr – Meryl
Sie sollten lieber _two_ Objekte Ihrer 'MyClass' erstellen, um zwei verschiedene Downloads durchzuführen. Sie können die Ivars schnell verwirren. Stellen Sie außerdem sicher, dass Sie [[NSURLConnection alloc] init ...] für den Thread aufrufen, in dem der Delegat ausgeführt werden soll. Möglicherweise der Hauptthread - ansonsten müssen Sie wissen, wie Sie einen sekundären Thread für diesen Zweck einrichten, der ein bisschen knifflig ist. – CouchDeveloper