WKWebView造成为什么会内存泄露露怎么回事

今天做webview和js交互的诸多事宜
众所周知wkwebview调用js的方法,要调用如下代码

//此处 setname为JS定义的方法名 内部 ‘张三’为传给JS的参数。 如果setname方法需要传入一个json或者array等非字符参数 需要用format方法将其转为string类型,在调用evaluate方法。例如

首先我要强调的是这样的调用是没有问题的 但是在实际应用中,由于我比较笨H5和JS的相关代码不懂,所以即便是这样的方法调用方法也是看不懂的,因为实际开发过程中不会有简单的setname(张三)这么简单接下来我说明一下我遇到的坑。

我的应用场景: 点击某个按钮判断iOS端是否打开了推送
首先点击按钮 是OC调用JS,哪么是否开启了推送有一个YES和NO要传给JS端我就是在给JS传参數的时候遇到的一些坑。

请看下面的代码 其中parma 是我们要传给JS的参数 ,cbDispatcher是OC与JS约定好的方法名只有掉相同的方法名才能掉的通,

如果这样寫的话会有报错,请看下图

请不要这样写最好能把completionHandler这个参数的block写成nil,因为可能无法一遍就成功,这里可以打印错误吗便于改成错誤。

注意:遇到这个问题一定是 json解析dictionary出问题了或者说拼接字符串时最后传的字符串格式有问题,所以这个错误的大致意思是 JS 不认识你傳过来的string。仔细看发现 在字符串中不应该加 那 一对单引号导致这个stringH5就不认识了.
注意我圈出来的和之前的区别经这样修改就可以了
正确的截图,如果completionHandler参数中返回两个null那么表示传参就成功了截图如下

从字面意思看,NSJSONWritingPrettyPrinted 是指json格式是:写成漂亮的印刷大概意思是:这样的json也是有格式的,这个写入选项会使用空格和缩进来使输出更有可读性
如果这个选项没有设置,则生成紧凑合理的JSON表达式
如果使用 kNilOptions 表示,没有什么格式就是一长溜的字符串。
但是经过我的测试这两种json格式我们的JS时都认可的 。可能有朋友的JS不认第一种格式请谨慎使用。

我是磊怀 QQ: 欢迎各位大佬联系我

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

今天做iPhone适配的时候,发现UIWebView有为什么会内存泄露露问题

了解到苹果在iOS8之后推出了新WebKit框架

如果有疑问请移步官方文档:

发布了10 篇原创文章 · 获赞 18 · 访问量 3万+

往WKWebView内注入JS方法时出现内存无法釋放问题

在上面的这个方法里面去创建一个webView,并且约定方法名称

执行本地的方法时会调用以下代理方法

可以打印JS端给你传过来的数据,鈳以根据数据去执行相应的方法

你以为JS调用本地的方法就完事了吗

错误,你会发现调用方法后内存根本不释放。也就是dealloc方法不执行

這句代码上面,准确的说是“self”的身上

我们可以把self换掉,就是说用其他换掉self这里面就要新建一个类

新建的类我都写在这里了,大家可鉯拿过去直接用

下面说的是最重要的改动,就是把

这样一来会发现内存释放了,dealloc方法会被执行了

.在当前界面显示的时候往WKWebView中注入JS,當界面消失时移除JS方法

  • 前言: web页面和app的直接的交互是很常见的东西在ios8之前,用的是uiwebview但是在ios8之后...

  • 开发App的过程中,常常会遇到在App内部加载網页通常用UIWebView加载。这个自iOS2开始使用的网页加载...

  • 前言 Xcode8发布以后编译器开始不支持IOS7,所以很多应用在适配IOS10之后都不在适配IOS7了其中包...

我要回帖

更多关于 为什么会内存泄露 的文章

 

随机推荐