热门搜索 :
考研考公
您的当前位置:首页正文

ViewController中嵌入WKWebView,内存溢出

来源:东饰资讯网
下面是解决方案,分OC和swift版本都有,先来OC

OC

1.参考几篇文章,第一种解决方案是在页面消失后,移除ScriptMessageHandler的代理,以下是代码。

写完之后就会发现dealloc方法已经调用了。

2. 第二种方法,比第一种麻烦一点,就是需要对代理进行弱引用,怎么做呢? 新建类LeakAvoider 继承NSObject,遵守WKScriptMessageHandler协议  下面是代码

.h文件内容 .m文件内容

有了这个类之后 ,就是在viewController中调用了,很简单!下面是用法

OK,写完之后,运行,发现 的dealloc正常执行了,如果控制器中对WKWebView进行进度条 标题、加载状态进行监听的话,需要在dealloc中移除监听。OK,OC版的已经结束了,下面是swift版本解决方案。

swift版

1.同OC一样  在viewcontroller的页面消失后,需要移除移除ScriptMessageHandler的代理,做法在下面代码中展示。

viewDiddisappear中代码

写完之后,deinit就可以执行了。

第二种方案,同样是创建新类,继承NSObject ,遵守WKScriptMessageHandler,下面是代码

swift中代码

写完之后就是用法,直接上代码

控制器中用法

写完之后deinit析构函数就可以正常执行了,结束。

第一次在简书写文章,写的不是很熟练,加上这个功能也很普通,只是练练手,里面的代码一些事直接copy过来,不要在意这些细节,在接下的文章中会写WKWebView的缓存的坑,清理缓存,并且会写OC与JS交互,互传数据,包括webViewjavaScriptBridge的使用,希望给大家带来帮助。

Top