iOS6中UIAlertView的EXC_BAD_ACCESS代码2

我想弄清楚为什么即时通讯崩溃在我的应用程序。

它在ios5.1模拟器中运行的Xcode 4.4中工作得很好,但是当我切换到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]; }