在UIAlertView在iOS6 EXC_BAD_ACCESS代码2
问题描述:
我想弄清楚为什么即时通讯崩溃在我的应用程序。在UIAlertView在iOS6 EXC_BAD_ACCESS代码2
它工作在Xcode 4.4完美的罚款与ios5.1的模拟器中运行,但是当我切换到的Xcode 4.5和iOS6的我得到一个EXC_BAD_ACCESS码2。这里是我的代码:
- (void) myMethod
{
UIAlertView *alertview = [[[UIAlertView alloc]initWithTitle:@"Title" message:@"message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil] autorelease];
alertview.tag = 1
[alertview show];
}
这是给我一个EXC_BAD_ACCESS代码2上的[UIAlertView show]
行
有什么想法吗?
谢谢!
答
我明白了。 我有同样的问题,在我的情况下,似乎该方法是从后台抛出(现在在ios7中,在ios6中,UIAlertView被自动置于主线程中,因为@nodepond说 - 谢谢! - )..
尽量保证从主线显示的方法:
[alertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
祝你好运!
答
它发生在我身上,即使在2014年。 问题是想使用已经发布的对象。
我做了什么错:
//class B with UIAletViewDelegate
-(void) showAlert{
UIAlertView * alert = [[UIAlertView alloc] initWithTitle bla bla...];
[alert show];
}
//class A
viewDidLoad{
MyClassB *B = [[B alloc] init];
[B showAlert];
}
什么是正确的做法:
//Class A
@implementation A{
ClassB *B;
}
viewDidLoad{
B = [[B alloc] init];
[B showAlert];
}
好的调试技能!肯定工作 –
我只想补充说,这个崩溃也发生在应用程序启动时,如果用户回家并返回,警报视图显示将导致崩溃。执行SelectorOnMainThread ...将按照Eva的建议修复它。 – Tommy
太棒了!这帮助我解决了我的问题! – Patrik