iOS6中UIAlertView上的EXC_BAD_ACCESS代码2

时间:2012-09-17 23:57:43

标签: uialertview exc-bad-access ios6 xcode4.5

我正在试图弄清楚为什么我会在我的应用中崩溃。

它在使用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];
}

这是在[UIAlertView show]

上给我一个EXC_BAD_ACCESS代码2

任何想法?

谢谢!

2 个答案:

答案 0 :(得分:127)

我知道了。 我有同样的问题,在我的情况下,似乎该方法现在从后台抛出(现在在ios7中,在ios6中UIAlertView被自动放入主线程,因为@nodepond说-thanks! - )..

尝试确保从主线程显示该方法:

[alertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
祝你好运!

答案 1 :(得分:0)

即使在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];
 }