J'utilise un UIWebView, et il affiche une alerte lorsqu'un bouton est cliqué (à partir de javascript). Il y a un autre bouton (dans le côté natif), qui ferme le contrôleur, donc deallocs également UIWebView. Le problème est que, si je touche le bouton dans UIWebView, et que j'appuie sur le bouton de fermeture avant que l'alerte ne soit remplie, mon contrôleur et UIWebView sont libérés, mais l'alerte reste à l'écran. Ensuite, si je clique sur un bouton d'alerte, application se bloque et donne l'erreur suivante:Zombie UIWebView quand il est désalloué juste après alert() appelé de javascript
[UIWebView modalView:didDismissWithButtonIndex:]: message sent to deallocated instance
Et cette méthode est appelée méthode privée
[UIModalView(Private) _popoutAnimationDidStop:finished:]
J'utilise ARC, et mon dealloc est comme ça :
- (void)dealloc {
[_myWebView stopLoading];
_myWebView.delegate = nil;
_myWebView = nil;
}
Mais cela ne résout pas mon problème parce que je pense UIModalView a une référence de mon WebView en tant que délégué, et je ne pouvais pas le mettre à zéro parce que son privé.
Comment puis-je le résoudre?
Cordialement
Je ne peux pas accéder à UIAlertView car il est géré par UIWebView en privé. – manuyavuz
Vous pouvez raccorder la fonction déléguée UIAlertView. Vous pouvez donc conserver UIWebView pour l'empêcher de sortir trop tôt. –