如何在用户友好的方式错误后退出应用程序?

时间:2011-09-20 06:58:25

标签: iphone objective-c error-handling nsassert

我需要保护我的代码免受可能的错误。如果它们出现那么没有必要进一步运行应用程序,所以我需要向用户提供一些消息,然后退出应用程序。所以,我正在检查条件,然后提醒:

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");
  }
}

另外,我在头文件中包含了委托协议。然而,该应用程序只是带来警报,但按下确定它只是冻结,我收到一些消息“CoreAnimation:忽略异常:关闭”。我缺少什么或退出的其他选项?

1 个答案:

答案 0 :(得分:2)

你不应该这样做,这是违反Apple HIG(人机接口指南):

  

iPhone应用程序永远不应该以编程方式退出,因为这样做会让用户崩溃。

最好向用户提供有关发生的错误的某种反馈,并提供重新启动流程的方法,而无需重新启动应用程序。但是,如果你真的真的想要,你可以使用

exit(0);