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(人机界面指南):

iPhone 应用程序永远不应该以编程方式退出,因为这样做对用户来说就像是崩溃。

最好向用户提供有关所发生错误的某种反馈,并提供一种无需重新启动应用即可重新启动进程的方法。但是,如果您真的非常想要,您可以使用

exit(0);
于 2011-09-20T07:10:26.877 回答