问题
I'm trying to figure out why im getting this crash in my app.
It works perfectly fine in Xcode 4.4 running in the simulator with ios5.1, but when i switch into xcode 4.5 and ios6 I'm getting an EXC_BAD_ACCESS code 2. Here is my code:
- (void) myMethod
{
UIAlertView *alertview = [[[UIAlertView alloc]initWithTitle:@"Title" message:@"message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil] autorelease];
alertview.tag = 1
[alertview show];
}
this is giving me an EXC_BAD_ACCESS code 2 on the [UIAlertView show]
line
any ideas?
thanks!
回答1:
I've got it. I have the same problem, in my case it seems that the method is thrown from background now (now in ios7, in ios6 UIAlertView was automatically put into the main-thread as @nodepond says -thanks!-)..
try to assure that the method is shown from main thread:
[alertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
Good luck!
回答2:
It's happened with me, even in 2014. The problem is want to use an object already released.
What I did wrong:
//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];
}
What is the right way:
//Class A
@implementation A{
ClassB *B;
}
viewDidLoad{
B = [[B alloc] init];
[B showAlert];
}
来源:https://stackoverflow.com/questions/12468677/exc-bad-access-code-2-on-uialertview-in-ios6