0

Je reçois une erreur avec le code suivant. Essentiellement, l'application confirme l'appel du numéro lorsqu'il est sélectionné dans la vue de la table. Le EXC_BAD_ACCESS entre lorsque le ViewContoller avec cette alerte est fermé.UIAlertView provoque un EXC_BAD_ACCESS

Cela ne se produit que si l'alerte est déclenchée. Ce n'est pas le cas si la table est uniquement affichée sans sélection. Cela me dit que je fais quelque chose de mal avec ce UIAlertView. J'ai probablement à faire avec la gestion de la mémoire et de libérer quelque chose que je ne devrais pas être.

Où est-ce que je me trompe?

phoneAlert = [[[UIAlertView alloc] initWithTitle:locationName message:displayNumber delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Call",nil] autorelease]; 
    [phoneAlert show]; 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 


- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == 1) { 
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel://%@",dialNumber]]];  
    } 

} 

- (void)dealloc { 
    [locations release]; 
    [location release]; 
    [dialNumber release]; 
    [phoneAlert release]; 
     [super dealloc]; 
} 
+0

Dupliquer la question: http://stackoverflow.com/questions/4212580/uialertview-exits-exc-bad-access-error/20058822#20058822 –

Répondre

3

Vous assignez phoneAlert à un autoreleasedUIAlertView, qui n'est pas retenu par votre instance parce que vous n'êtes pas en utilisant la syntaxe à point ou les méthodes setter, vous faites mission droite.

Donc, si vous avez défini phoneAlert comme une propriété avec le mot-clé retain, alors vous devriez faire pour obtenir le résultat souhaité:

self.phoneAlert = ... 

ou

[self setPhoneAlert:...]; 

Sinon, vous obtiendrez EXC_BAD_ACCESS en votre méthode dealloc, car vous avez autorelease d la vue d'alerte, de sorte que l'instance a été désallouée par le pool autorelease. Activez les zombies dans votre projet pour voir cela en action.

+0

Tout de suite, merci pour l'aide à ce sujet. En fait, je suis retourné et j'ai réalisé que je devenais beaucoup plus complexe que ce qu'il fallait vraiment être. Surtout pour juste un message de confirmation. Je devrais le faire plus souvent. – TheHockeyGeek

Questions connexes