我正在试图弄清楚为什么我会在我的应用中崩溃。
它在使用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]
行
任何想法?
谢谢!
答案 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];
}