Pregunta

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Order"
                                                    message:@"Order Successfully Discontinued."
                                                   delegate:self
                                                 cancelButtonTitle:nil
                                          otherButtonTitles: @"Ok",nil];
//[alertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
alertView.tag=TAG_DEV;

[alertView show];



-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{


    if(alertView.tag==TAG_DEV)
    {
        if(buttonIndex==0)
        {

        }
        else
            NSLog(@"Here");

    }
}

This crashes. How can I fix it?

¿Fue útil?

Solución

When you crash on a "objc_msgSend()" you are most likely sending a messageto an already-freed object. Or you have a pointer, which is correct, but something have changed the objects contents. Another cause can be the use of a dangling pointer that once pointed to the memory now occupied by your object. Occasionally objc_msgSend crashes because a memory error changed the runtime's own data structures, which then would cause trouble in the receiver object itself.

In this situation you need to check wheter or not, the delegate of the UIAlertview has been released after presenting, so when the alert is dismissed, it is not sending a message to it's delegate, which may be nil. An other option is that the UIViewController that presents the alert view is released after it is presented. Please check if the alert delegate is not released after it is presented.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top