2012-04-17 15 views
5

Vorrei scaricarlo con un timeout più breve, in modo che sia più veloce e per evitare che l'app si arresti in modo anomalo su una connessione errata.Come impostare il timeout per dataWithContentsOfURL: url

- (void) CreateTitleView { 
    NSURL* url; 
    NSData* imageData; 
    imageData = [NSData dataWithContentsOfURL:url ]; 
    UIImage* image = [UIImage imageWithData:imageData]; 
} 

Non sono bravo nell'obiettivo C, quindi chiedo il vostro aiuto, per farlo. Grazie.

+0

Il timeout breve non renderà la connessione più veloce! Ma dai un'occhiata a NSURLConnection. –

risposta

2

Non è possibile controllare la velocità di download impostando un timeout. Ciò controllerebbe solo il tempo di attesa dell'applicazione prima di rinunciare al download. Dovresti rifattorizzare la tua applicazione per caricare i dati dell'immagine in background, in modo che l'interfaccia utente rimanga reattiva fino al completamento del download.

Verificare NSURLConnection (sendAsynchronousRequest) o AFNetworking.

+1

Ok. Sapevo che il timeout più breve non causerà il download più veloce. Per quanto riguarda il download da URL non raggiungibile, l'impostazione di un timeout può almeno evitare il download non necessario. Quindi come si può impostare il timeout su '[NSData dataWithContentsOfURL: url]'? – Yeung

+0

@Yeung: non puoi fidarti. Nei casi in cui è necessario essere in grado di controllare l'impostazione di timeout per il recupero dei dati da un URL, utilizzare i metodi da ['NSURLConnection'] (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference /Foundation/Classes/NSURLConnection_Class/Reference/Reference.html) invece della classe. – Perception

9

In questi giorni è possibile. L'API è così:

NSURLResponse* urlResponse; 
NSError* error; 
NSMutableURLRequest* urlRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20]; 
NSData* d = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&urlResponse error:&error]; 
Problemi correlati