iPhone - 如何在运行时处理错误

时间:2012-02-06 23:46:52

标签: iphone objective-c memory-management error-handling uialertview

编写代码时,有许多情况必须被视为运行时错误:alloc / init返回nil,找不到资源,[someClass canDoThis]为绝对需要的功能返回NO,其中YES为自然的回答,......

对于所有这些情况,我编写了一个exitWithMessage例程(显示一个警告框),每个类都有一个kill方法,可以释放已分配的内存。

所以...在init方法中,你有这些例外,我认为你可以这样做:

[self kill];
[OneClass exitWithFatalErrorMessage];
return nil;

- (void) exitWithFatalErrorMessage:(NSString*)message
{
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedStringFromTable(@"Error" @"ErrorMessages", @"") message:message delegate:self cancelButtonTitle:NSLocalizedStringFromTable(@"Understood", @"ErrorMessages", @"") otherButtonTitles: nil];
    [alert show];
    [alert release];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    // stop the normal running of the app, there is a situation that would prevent it
}

- (void)kill
{
    self.member = nil;
    self.member2 = nil;
    ...
}

但是这不起作用......我的警报没有显示(exitWithMessage在其他地方使用时工作正常,而不是init方法。

你会如何处理这些案件?这段编码是一个很好的方法吗? 如果是的话,为什么我的警报不显示(我进入视图控制器的initWithCoder方法)?

1 个答案:

答案 0 :(得分:0)

您实际上是在调用exitWithFatalErrorMessage方法,因为在您的代码中您调用exitWithMessage,尝试将其更改为:

[OneClass exitWithFatalErrorMessage:@"Message"];