Как выйти из приложения после ошибки в удобной для пользователя форме? - PullRequest
2 голосов
/ 20 сентября 2011

Мне нужно защитить свой код от возможных ошибок.Если они возникают, то нет смысла запускать приложение дальше, поэтому мне нужно донести до пользователя какое-то сообщение и затем выйти из приложения.Итак, я проверяю условия и затем выношу предупреждение:

if (someError){    
  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"No database file exist. App will close now." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
  [alert show];
  [alert release]; 
}

И в методе делегата я закрываю приложение с помощью NSAssert:

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
  if (buttonIndex == 0) {
    NSAssert(0, @"closing");
  }
}

Также я включилпротокол делегата в заголовке.Тем не менее, приложение просто выводит предупреждение, но после нажатия OK оно просто зависает, и я получаю сообщение «CoreAnimation: игнорирование исключения: закрытие».Чего мне не хватает или какие еще варианты есть?

1 Ответ

2 голосов
/ 20 сентября 2011

Вы не должны этого делать, это противоречит Apple HIG (Руководство по интерфейсу пользователя):

Приложения iPhone никогда не должны выходить программно, потому что это выглядит как сбой для пользователя.

Всегда лучше предоставить пользователю некоторую обратную связь об ошибке, которая произошла, и предоставить способ перезапустить процесс без перезапуска приложения.Однако, если вы действительно, очень хотите, вы можете использовать

exit(0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...