Question: This piece of code which is supposed to show an alert window with a text input:

```
self.alert = [[UIAlertView alloc] initWithTitle:@"Hello" message:@"How are you?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
self.alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[self.alert show];

```

Causes this error:

```
Thread 7: Program received signal: "EXC_BAD_ACCESS"

```

This is how self.alert is defined:

```
@interface MyClass : NSObject
{
    UIAlertView *alert;
    id <MyClassDelegate> __unsafe_unretained delegate;
}

@property (nonatomic, retain) UIAlertView *alert;
@property (unsafe_unretained) id <MyClassDelegate> delegate;

```

Answer: 
The problem is maybe because of the customize.

I do not know why, but appear to me that the problem is because of the use of threads + customize of your alert.

Can you try to show this alert on the main thread? What happen?

You probably get an error in this line:
 self.alert.alertViewStyle = UIAlertViewStylePlainTextInput;

What you need to do if yes, is perform this in the main thread.

```
- (void) yourMethod{
    [self performSelectorOnMainThread:@selector(yourMethod2) withObject:nil waitUntilDone:NO];
}

- (void) yourMethod2{
    self.alert = [[UIAlertView alloc] initWithTitle:@"Hello" message:@"How are you?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
    self.alert.alertViewStyle = UIAlertViewStylePlainTextInput;
    [self.alert show];
}

```

Sorry to can't help you more than that, but I do not know exactly what happen, but I already read about issues when editing things to show, in other threads.

Hope it help you!
The `EXC_BAD_ACCESS` is caused by accessing a released object. To avoid this make your call to `UIAlertView` kind of modal:

Function body:

```
-(void)checkSaving
{
    UIAlertView *alert = [[UIAlertView alloc]
        initWithTitle:@"Do you want to add these results to your database?"
        message:@"\n\n"
        delegate:self
        cancelButtonTitle:@"No"
        otherButtonTitles:@"Save", nil];

    alert.alertViewStyle = UIAlertViewStyleDefault;
    [alert show];

    //this prevent the ARC to clean up :
    NSRunLoop *rl = [NSRunLoop currentRunLoop];
    NSDate *d;
    d= (NSDate*)[d init];
    while ([alert isVisible]) 
    {
     [rl runUntilDate:d];

    }
}

```

Your choice result:

```
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    // the user clicked one of the OK/Cancel buttons

    if (buttonIndex == 1)//Save
    {
        //do something

    }
    if (buttonIndex == 0)//NO
    {
        //do something
    }
}

```

Register the functions in the interface declaration:

```
@interface yourViewController ()
    -(void)checkSaving
    - (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
//...
@end

```

To call:

```
[self checkSaving];

```

I wish this will help you.