xcode 4.4.1 uialertview崩溃

时间:2012-09-25 09:29:08

标签: iphone ios xcode

每当我的应用程序打开时,如果检查某些条件。如果失败,则会向用户显示UIAlertView。

当执行[alertview show]时,编译符合xcode 4.4.1崩溃,在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

3 个答案:

答案 0 :(得分:0)

UIAlertView是在显示或解除时调用的委托方法。所以添加

 <UIAlertViewDelegate> in .h 

再次进一步崩溃

 delegate:nil in line 2

然后删除

appMessageAlertView.delegate = self;

 [appMessageAlertView release];

答案 1 :(得分:0)

尝试设置标题字符串。

此外,您的第一行可以简化为: NSString *appMessage = @"Error Message HERE";

第3行也不是必需的,因为您已经在第2行设置了委托

如果您启用了ARC,则不允许[appMessageAlertView release];

您使用otherButtonTitles是否有原因?为什么不简单地将cancelButtonTitle设置为NSLocalizedString(@"OK", nil)

答案 2 :(得分:0)

尝试一下,它会起作用:

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