iOS 7.1应用程序在显示警报视图时崩溃

时间:2014-03-31 13:23:05

标签: ios iphone ipad uialertview

我多次使用过alertview,但目前我有一个问题。我的应用程序正在使用所有版本,除了它在iOS 7.1中崩溃。以下是日志消息。

[_UIBarBackgroundCustomImageContainer image]: message sent to deallocated instance 0x13b88840

 UIAlertView *alert  =   [[UIAlertView alloc]initWithTitle:@"Title" @"Test" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
 [alert show];

我不明白为什么它只会在iOS 7.1中崩溃

2 个答案:

答案 0 :(得分:0)

你确定要在主线上吗?

您可以像这样测试:[NSThread isMainThread];

答案 1 :(得分:0)

根据OP的要求,我刚才将我的评论作为答案。

以下行存在一些问题:

[[UIAlertView alloc]initWithTitle:@"TestTitle" @"Test" delegate:self cancelButtonTitle:kActionOk otherButtonTitles:nil, nil];

只需用

替换它
[[UIAlertView alloc]initWithTitle:@"TestTitle" message:@"Test" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

关于该行的问题,它们是:

1)方法initWithTitle:delegate:cancelButtonTitle:otherButtonTitles:不是UIAlertView的真实实例方法,所以它不应该在任何iOS中工作,正如您所说的那样7之前的iOS版本。您应该使用的方法是initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:注意额外的参数message:这是主要问题,应该创建一个编译器错误,如果它已经通过那应该抛出unrecognised selector的运行时错误。

2)第二个问题是,您为nil的最后一个参数传入了两个otherButtonTitle:,此参数nil已终止,因此只要nil nil UIAlertView 1}}它将结束可传递给该参数的内容,因此第二个{{1}}毫无意义且从未见过。这也可能会产生编译器错误,但会出现在第一个问题的阴影中(1)

有关{{1}}的更多信息,请Apple Documentation on UIAlertView