Код EXC_BAD_ACCESS 2 на UIAlertView в iOS6
Я пытаюсь понять, почему я получаю этот сбой в своем приложении.
Он отлично работает в 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]
любые идеи?
спасибо!
Ответы
Ответ 1
У меня это есть.
У меня такая же проблема, в моем случае кажется, что метод теперь выбрасывается из фона (теперь в ios7, в ios6 UIAlertView автоматически помещался в основной поток, поскольку @nodepond говорит -thanks! -)..
попробуйте убедиться, что метод показан из основного потока:
[alertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
Удачи!
Ответ 2
Это случилось со мной, даже в 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];
}