大家都知道WebViewJavascriptBridge它主要帮助我们优雅的实现OC与JS的交互,下面这篇文章主要给大家介绍了关于iOS开发之WKWebViewJavascriptBridge Xcode9中导致crash的解决方法,需要的朋友可以参考借鉴,下面来一起看看吧。 在iOS开发中,WKWebViewJavascriptBridge是一个非常实用的第三方库,它使得Objective-C或Swift代码能够与嵌入在WKWebView中的JavaScript进行优雅的交互。然而,在升级到Xcode 9时,开发者可能会遇到使用该库时导致应用崩溃的问题。本文将深入探讨这个问题,并提供两种可能的解决方案。 我们需要理解WKWebViewJavascriptBridge的工作原理。它通过监听WKWebView的导航动作(WKNavigationAction)来识别并处理特定的URL请求,这些请求通常用于桥接通信。当WKWebView接收到一个请求时,WKWebViewJavascriptBridge会检查URL是否属于其内部处理的范围,如加载JavaScript文件或传递消息。 在Xcode 9中,导致崩溃的原因可能是由于在特定情况下,WKWebViewJavascriptBridge没有正确地转发WKNavigationAction给原始的webViewDelegate。原始的webViewDelegate可能需要处理某些导航动作,而WKWebViewJavascriptBridge的错误处理可能导致这些动作被忽视,从而引起程序崩溃。 解决方案一: 在`webView:decidePolicyForNavigationAction:decisionHandler:`方法中,当检测到不是WKWebViewJavascriptBridge处理的URL时,应确保将导航动作转发给原始的webViewDelegate。在原始代码的基础上添加了一个else分支,确保在适当的时候调用代理方法: ```objc if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:decidePolicyForNavigationAction:decisionHandler:)]) { [_webViewDelegate webView:webView decidePolicyForNavigationAction:navigationAction decisionHandler:decisionHandler]; } else { decisionHandler(WKNavigationActionPolicyAllow); } ``` 解决方案二: 另一种修改方式是在原有的逻辑之后,直接调用决策处理器,允许导航动作继续: ```objc decisionHandler(WKNavigationActionPolicyAllow); ``` 这两种修改方法的目的是确保当WKWebViewJavascriptBridge不处理特定的URL时,能够正确地将控制权交还给webViewDelegate,避免因为缺失的处理导致的崩溃。 总结来说,解决WKWebViewJavascriptBridge在Xcode 9中导致的崩溃问题,关键在于正确处理WKNavigationAction,并确保所有未被桥接库处理的导航动作都得到恰当的响应。通过上述的代码修改,可以有效地避免此类问题,保证应用的稳定运行。在进行这样的修复时,务必对代码进行充分的测试,以确保所有情况下的功能完整性和兼容性。
- 粉丝: 3
- 资源: 937
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 校园失物招领网站(程序+数据库+报告)
- stage1_weight.pth.tar
- PostgreSQL DBA实战视频教程(完整10门课程合集)
- C++《使用3D激光测距仪检测并避开自动驾驶汽车的障碍物》+项目源码+文档说明+代码注释
- Android5-9 root源码包
- Flink1.19源码剖析课程下载
- xxl-job任务调度集群部署文档,分享给需要的同学
- 2024年手机号段归属地-517152.rar
- 社区物资交易互助平台 基于Spring Boot框架实现的社区物资交易互助平台 (程序+数据库+报告)
- 使用 RRT* 和最小抖动轨迹生成进行四轴飞行器路径规划+C++项目源码+文档说明+代码注释