2

コードを潜在的なエラーから保護する必要があります。それらが発生した場合、アプリをさらに実行する意味がないため、ユーザーにメッセージを表示してからアプリを終了する必要があります。だから、私は条件をチェックしてからアラートを出しています:

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: 例外を無視します: 閉じています」というメッセージが表示されます。何が欠けているか、または他にどのようなオプションが存在しますか?

4

1 に答える 1

2

Apple HIG (Human Interface Guidelines) に違反しています。

iPhone アプリケーションをプログラムで終了することは、ユーザーにとってクラッシュのように見えるため、絶対に行わないでください。

発生したエラーについて何らかのフィードバックをユーザーに提供し、アプリを再起動せずにプロセスを再開する方法を提供することを常にお勧めします。ただし、本当に必要な場合は、使用できます

exit(0);
于 2011-09-20T07:10:26.877 に答える