UIWebView EXC

编程入门 行业动态 更新时间:2024-10-25 17:17:09
本文介绍了UIWebView EXC_BAD_ACCESS 崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我遇到使用 UIWebView 的应用程序崩溃.通常是在页面没有完全加载并且 UIWebView 被发送 stopLoading 选择器的时候.或者当 UIWebView 完全加载页面时.我有 EXC_BAD_ACCESS.堆栈如下所示:

I'm experiencing crashes of an app that uses UIWebView. Usually it's when page is not fully loaded and UIWebView is sent stopLoading selector. Or when UIWebView fully loaded page. I've got EXC_BAD_ACCESS. Stack looks like this:

#0 0x95bb7688 in objc_msgSend #1 0x30a671db in -[UIWebView webView:decidePolicyForNavigationAction:request:frame:decisionListener:] #2 0x3024a10d in __invoking___ #3 0x30249ff8 in -[NSInvocation invoke] #4 0x358ab160 in HandleDelegateSource #5 0x302452c1 in CFRunLoopRunSpecific #6 0x30244628 in CFRunLoopRunInMode #7 0x32044c31 in GSEventRunModal #8 0x32044cf6 in GSEventRun #9 0x309021ee in UIApplicationMain #10 0x0000239c in main at main.m:13

对我来说最奇怪的是 webView:decidePolicyForNavigationAction:request:frame:decisionListener: 选择器发送到 UIWebView,因为在 UIWebView 文档中没有这样的选择器!仅适用于 Cocoa(不是 cocoa touch)WebView.我怀疑 UIWebView 或其委托有问题.但我无法设置断点来观看它们.请告知我在这种情况下如何获得更多信息.

for me most strange thing here is webView:decidePolicyForNavigationAction:request:frame:decisionListener: selector sent to UIWebView, because there is no such selector in UIWebView documentation! Only for Cocoa (not cocoa touch) WebView. I suspect that there is something wrong with UIWebView or its delegate. But I can't set breakpoint to watch them. Please advise how I can get more info in this situation.

推荐答案

你必须在离开视图之前停止加载 webView 并移除委托:

You have to stop loading the webView and remove the delegate before leaving the view:

// ARC (correct solution) - (void)dealloc { [_webView setDelegate:nil]; [_webView stopLoading]; } // non ARC - (void)dealloc { [webView setDelegate:nil]; [webView stopLoading]; [webView release]; [super dealloc]; } // ARC (older solution) - (void)viewWillUnload { [webView setDelegate:nil]; [webView stopLoading]; }

Apple 文档的内容是:重要提示在释放您已为其设置委托的 UIWebView 实例之前,您必须首先将其委托属性设置为 nil.例如,这可以在您的 dealloc 方法中完成.

What Apple documentation is saying: Important Before releasing an instance of UIWebView for which you have set a delegate, you must first set its delegate property to nil. This can be done, for example, in your dealloc method.

更多推荐

UIWebView EXC

本文发布于:2023-11-26 12:39:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1633947.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:UIWebView   EXC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!