2012-09-25 160 views
1

每當我的應用程序打開,如果檢查某些條件。如果失敗,則向用戶顯示UIAlertView。xcode 4.4.1 uialertview崩潰

構建在xcode 4.4.1崩潰時執行,當[alertview show]執行時,它在xcode 4.3.2和xcode 4.5中正常工作。

這裏是錯過了一個重要信息的代碼

NSString *appMessage = [NSString stringWithFormat:@"Error Message HERE"]; 
UIAlertView *appMessageAlertView = [[UIAlertView alloc] initWithTitle:nil message:NSLocalizedString(appMessage,@"Error Message") delegate:self cancelButtonTitle:nil otherButtonTitles:NSLocalizedString(@"OK", @"ok"),nil]; 
appMessageAlertView.delegate = self; 
[appMessageAlertView show]; 
[appMessageAlertView release]; 

:墜機發生在iOS6的

回答

0

顯示或dissmissed時UIAlertView中的delgates方法被調用。所以加

<UIAlertViewDelegate> in .h 

再進一步崩潰

delegate:nil in line 2 

然後刪除

appMessageAlertView.delegate = self; 

[appMessageAlertView release]; 
+0

在除去釋放 - 不使分配/初始化不平衡?使用ARC時不允許使用 – Farcaller

+0

版本,但這會給你一個編譯錯誤。當不使用ARC時,版本應該在那裏。 – pre

+0

崩潰!=編譯錯誤。我假設,如果有一個ARC問題,它也會在xcode 4.5中引人注目。 – Farcaller

0

嘗試設置標題字符串。

而且你的第一線可以簡化爲: NSString *appMessage = @"Error Message HERE";

3號線也沒有必要的,因爲你已經設置委託在2

線如果已經啓用了ARC [appMessageAlertView release];是不允許的。

您有使用otherButtonTitles的原因嗎?爲什麼不簡單設置cancelButtonTitleNSLocalizedString(@"OK", nil)

0

試試這個,它會工作:

UIAlertView *appMessageAlertView = [[UIAlertView alloc] initWithTitle:nil message:@"Error Message" delegate:self cancelButtonTitle:nil otherButtonTitles:@"ok",nil]; 
[appMessageAlertView show]; 
[appMessageAlertView release];