我使用的是 UIWebView,它会在单击按钮时弹出警报(来自 javascript)。还有另一个按钮(在 native 端),它关闭 Controller ,因此 deallocs 也 UIWebView。
问题是,如果我触摸 UIWebView 中的按钮,并在填充警报之前触摸关闭按钮,我的 Controller 和 UIWebView 将被释放,但警报仍保留在屏幕上。然后,如果我在警报上单击任何按钮,应用程序就会崩溃并给出以下错误:
[UIWebView modalView:didDismissWithButtonIndex:]: message sent to deallocated instance
这个方法是从私有(private)方法调用的
[UIModalView(Private) _popoutAnimationDidStop:finished:]
我正在使用 ARC,我的 dealloc 是这样的:
- (void)dealloc {
[_myWebView stopLoading];
_myWebView.delegate = nil;
_myWebView = nil;
}
但这并没有解决我的问题,因为我认为 UIModalView 有一个对我的 webview 的引用作为委托(delegate),我不能将它设置为 nil,因为它是私有(private)的。
我该如何解决?
问候
最佳答案
在解除分配 UIWebView 之前,找到一种方法将 UIAlertView 上的委托(delegate)设置为 nil。
关于ios - Zombie UIWebView 在从 javascript 调用 alert() 后立即解除分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15900137/