1

編寫代碼時,有許多情況下必須將其視爲運行時錯誤:alloc/init返回nil,未找到資源,[someClass canDoThis]返回NO -needed特徵,其中YES將是自然的回答,...iPhone - 如何在運行時處理錯誤

對於所有這些情況下,我寫了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方法爲例)?

回答

0

你實際調用exitWithFatalErrorMessage方法,因爲在你的代碼中調用exitWithMessage相反,嘗試將其更改爲這樣:

[OneClass exitWithFatalErrorMessage:@"Message"]; 
+0

當然......這只是一個問題的錯誤。 – Oliver 2012-02-07 10:32:55

相關問題