我多次使用过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中崩溃
答案 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