Подтвердить что ты не робот

Код 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]

любые идеи?

спасибо!

4b9b3361

Ответ 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];
 }