每当我的应用程序打开时,如果检查某些条件。如果失败,则会向用户显示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
答案 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];