机器:mac pro
开发工具:XCode 7.2
时间 2016.4月
把有用的放在最前面,如在开发,拿走,不写。
WKWebView是可以很好解决webView的内存过高和不释放的问题,亲测,有效。内存原先跑200m不会掉,现在只需要60m
WKwebView使用方式和webView很相似,当扩充了好多的方法。ios8之后才推出的
你所需要的:
一个判断版本的宏命令
#define IOS_NEWER_OR_EQUAL_TO_8 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] >=8.0)
一个引入头文件
#import<WebKit/WKWebView.h>
协议
WKNavigationDelegate,WKUIDelegate
使用
if(nil!= mode.webUrl) {
NSURL*url = [NSURLURLWithString:mode.webUrl];
NSURLRequest*request = [NSURLRequestrequestWithURL:url];
if(IOS_NEWER_OR_EQUAL_TO_8) {
[_wkWebViewloadRequest:request];
return;
}
[_webVloadRequest:request];
}
五一之前就想记录一下webView内存消耗的问题,一直拖到现在,倍感惭愧。
主要发现这个问题是因为我们公司的APP中要打开一些视频网站的网页,我Run起来看了看内存开销,模拟器直飚200M,真机也有一百多,挺吓人的,就一个界面,而且页面注销以后,内存不会释放。好吓人有没有。
发现问题出现的原因主要有:
第一:苹果webView的性能一直没有被重点优化,现在页面中的很多元素和js都不会被加载完立刻释放
第二:使用webView加载页面,一些js交互会造成内存泄露,无奈
第三:网页上如果有视频模块很消耗资源,-》废话。
网上有有些基于webView的修改方法,但是效果都因人而已。嗯 ,我只能说因人而异了,没有最优的解决方法,比如初始化的时候,设置webview的内存申请和设置界面小时的时候,手动移除内存(亲测,不一定有用),但有个关于js的内存泄露修补可以试下。