Ho riscontrato problemi con il download di 5 MB di file, ci sono voluti più di 2 minuti su iPhone 5 con iOS 6.1.NSURLConnection download molto lungo
Utilizzando iPhone 4S con la stessa versione di iOS richiede solo 10 secondi, entrambi utilizzano il WiFi.
Ho provato diversi criteri di cache e intervallo di timeout di NSURLRequest, non ha cambiato nulla, richiede ancora molto tempo. Il download è su HTTP.
Sto usando NSURLConnection classe, prima di scaricare questo file "grande" sto scaricando altri due.
Non so che altro può essere importante, per ridurre il tempo.
Grazie in anticipo.
Codice:
@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:@"..."];
}
}
ed altri senza nulla di speciale, spero che questo sarà sufficiente
Ho trovato questo post https://devforums.apple.com/message/754875#754875, ma ancora non funziona bene per me. Comunque ora capisco meglio questa strana situazione.
Il tuo codice è importante. Se è possibile pubblicare la modalità di creazione e avvio della richiesta e i metodi di delega. –
Qualche idea? Forse questo link dalla mia modifica mi aiuterà, sono a corto di idee – Meryl
Dovresti piuttosto creare _two_ oggetti del tuo 'MyClass' per eseguire _due_ download diversi. Puoi rapidamente confondere gli ivar. Inoltre, assicurarsi di invocare [[NSURLConnection alloc] init ...] su quel thread in cui si desidera eseguire il delegato. Forse il thread principale - altrimenti devi sapere come impostare un thread secondario per quello scopo che è un po 'complicato. – CouchDeveloper