Wahrscheinlich eine eher triviale Frage aber wird der Abschluss Block immer mit [NSURLConnection sendAsynchronousRequest: ...]
genannt werden? ODER muss ich einen Timeout-Timer implementieren?Will [NSURLConnection sendAsynchronousRequest: ...] immer Fertigstellung Block schicken?
Betrachten Sie das folgende, wo ich einen MBProgressView
vor dem Anruf hinzufügen und sie nur im Abschluss Block entfernen:
[self showHUDWithTitle:@"Configuring"];
[NSURLConnection sendAsynchronousRequest:request
queue:[[NSOperationQueue alloc] init]
completionHandler:^(NSURLResponse *response,
NSData *data,
NSError *error) {
if ([data length] >0 && error == nil) {
[self hideHUDWithFlag:YES
andTitle:@"Finished"
andSubtitle:@"(Box was configured)"];
} else if ([data length] == 0 && error == nil) {
[self hideHUDWithFlag:NO
andTitle:@"Failed"
andSubtitle:@"(Check box connection)"];
NSLog(@"Nothing was downloaded.");
} else if (error != nil) {
[self hideHUDWithFlag:NO
andTitle:@"Error"
andSubtitle:@"(Check box connection)"];
NSLog(@"Error = %@", error);
}
}];
natürlich. Ein Completion-Handler ist ein COMPLETION-Handler - kein Erfolgs-Handler: D –
@ Daij-Djan Ich bin der Erfolgs-Handler, nicht der Completer, der die Vervollständigung abschließt! – Groot
if (Fehler!) = Erfolg: D –