iOS中wkwebView内存泄漏与循环引用问题的示例分析-创新互联

这篇文章给大家分享的是有关iOS中wkwebView内存泄漏与循环引用问题的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

创新互联建站从2013年创立,是专业互联网技术服务公司,拥有项目成都网站建设、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元尼元阳做网站,已为上家服务,为尼元阳各地企业和个人服务,联系电话:18980820575

解决方法

1,在做网页端js交互的时候 我们都会这样去添加js

[self.customWebView.configuration.userContentController addScriptMessageHandler:self name:obj];

后面也添加了 delloc

- (void)dealloc {
 [_customWebView removeObserver:self forKeyPath:@"estimatedProgress"];
 [self removeScriptMessageHandler];
}

后来发现在加载网页的时候 pop push 多次操作 内存一直在增加,高的时候 都快200上下了,才注意到这个内存问题,
刚开始的解决方法是:

- (void)viewWillDisappear:(BOOL)animated {
 [super viewWillDisappear:animated];
 
 [self removeScriptMessageHandler];
}

后来发现问题依旧存在 delloc 依旧不走,虽然走了移除方法 ,但是在当你在pop push时候 网页没有移除掉原先占的内存,后来发现

[userContentController addScriptMessageHandler:self name:GetKeyiOSAndroid_Action];

这里userContentController持有了self ,然后
userContentController 又被configuration持有,
最终呗webview持有,然后webview是self的一个私有变量,
所以self也持有self,所以这个时候有循环引用的问题存在,
导致界面被pop或者dismiss之后依然会存在内存中。不会被释放
目前想到2个办法

1,上面我提到了 self持有self,导致的循环引用问题

我做法是重新建了一个类WKWebViewConfiguration

[[WKWebViewConfiguration alloc]init]; 

  userContentController =[[WKUserContentController alloc]init];       configuration.userContentController= userContentController; 

  webView = [[WKWebView alloc]initWithFrame:self.view.bounds configuration:configuration];

重写self方法就解决了

2,delloc 内存,

- (void)viewWillAppear:(BOOL)animated {
 [super viewWillAppear:animated];

 [_webView.configuration.userContentController addScriptMessageHandler:self name:GetKeyiOSAndroid_Action];
 [_webView.configuration.userContentController addScriptMessageHandler:self name:Upload_Action];
}

- (void)viewWillDisappear:(BOOL)animated {
 [super viewWillDisappear:animated];

 [_webView.configuration.userContentController removeScriptMessageHandlerForName:GetKeyiOSAndroid_Action];
 [_webView.configuration.userContentController removeScriptMessageHandlerForName:Upload_Action];
}

感谢各位的阅读!关于“iOS中wkwebView内存泄漏与循环引用问题的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:iOS中wkwebView内存泄漏与循环引用问题的示例分析-创新互联
文章地址:http://azwzsj.com/article/hccce.html