gpt4 book ai didi

ios - 重用 UIWebView 导致崩溃

转载 作者:可可西里 更新时间:2023-11-01 03:57:29 31 4
gpt4 key购买 nike

我了解到重用 UIWebViews 是一种不好的做法。我在工作中继承的一些代码正在将各种内容推送到 UIWebView。 Powerpoint、Word 文档和视频。这在正常情况下一切正常。当我们太快地切换 UIWebView 中的内容时,它会转储。

我的 webView 被设置为一个属性。它在 IB 中连接得很好。从我们的 tableView 中正常选择加载本地内容就好了。需要快速选择同一单元格或多个单元格的组合才能使其崩溃。

我可以为 webViewDidFailWithError 捕获一些错误消息。但即使没有崩溃,这些也会触发。这是错误的本地化字符串。

The operation couldn’t be completed. (NSURLErrorDomain error -999.)

当应用程序最终崩溃时,它会因为这个愚蠢的 WebCore 错误而崩溃。

Application Crash image

如果有人有任何链接或一些代码示例如何处理这个问题,我将不胜感激。也许是一个如何最好地重用我的 webView 属性而不破坏一切的例子。

我会加载我的一些代码,但是有很多与 webView 本身无关的事情。所有被推送到 webView 的内容都是通过 [self.webView loadRequest:request]; 完成的,请求是一个 NSURLRequest,其中填充了本地内容的路径。

如果有人能帮助我解决这个问题,我将不胜感激。为简单的事情祈祷吧。

最佳答案

我不确定这种方式是否是解决问题的“最佳”方式,但它似乎确实运作良好。简短、甜美且有效。

我禁用了与 tableView 的 userInteraction,它更新了 webView 中的内容。由于您必须如此多地捣碎它,因此可能不会错过这里或那里的点击。所以现在,这是解决方法。

#pragma mark -
#pragma mark UIWebViewDelegate methods

-(void)webViewDidStartLoad:(UIWebView *)webView {
[self.tableView setUserInteractionEnabled:NO];
}

-(void)webViewDidFinishLoad:(UIWebView *)webView {
[self.tableView setUserInteractionEnabled:YES];
}

// I re-enable on load failures as they can block you out entirely on fail
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
[self.tableView setUserInteractionEnabled:YES];
}

关于ios - 重用 UIWebView 导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235485/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com