nsurlconnecion не возвращает ноль, даже если сеть не работает - PullRequest
0 голосов
/ 14 февраля 2010

Совершенно новый для сетевого программирования и особенно объективно-c сетей ...
Даже если я выключу сетевой интерфейс на своем компьютере или переведу свой iPhone в режим ожидания, NSURLConnection не будет верните ноль с неприятным сюрпризом, что приложение умирает.

Я соответствую протоколу NSURLConnection со всеми правильными методами обратного вызова ...

Так как бы вы справились со случаем, когда у клиента нет подключения к интернету?

Фрагмент кода, в котором я публикую данные для входа на сервер:

-(void)Login {
     ...
     NSURLConnection *theConnection = [NSURLConnection connectionWithRequest:post delegate:self];
    if (theConnection==nil) {
         //Here I want to show an alert but this case never happens....
    }
    else {
         receivedData=[[NSMutableData data] retain];
    }
}
...


//This callback is called correctly but no alert shows up and after this method app dies.

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    [connection release];
    [receivedData release];
    [self setLoggedIn:NO];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                              message:[error localizedDescription]
                                              delegate:self
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles: nil];
    [alert show];
    [alert release];
}

1 Ответ

2 голосов
/ 14 февраля 2010

Ваше приложение, вероятно, аварийно завершает работу, потому что вы освобождаете объект подключения, даже если у вас его нет. Удалите [connection release]; из метода делегата.

...