UIWebView和WKWebView都是屬于加載網(wǎng)頁的框架届良。曾經(jīng)做過一個項目笆凌,要用到加載網(wǎng)頁,我使用了UIWebView士葫,程序正常乞而,不崩潰,但是打開內(nèi)存管理一看慢显,我去爪模!~~內(nèi)存秒秒鐘飆升了十多兆,并且內(nèi)存有增無減荚藻,幸運的是還沒有造成內(nèi)存泄漏屋灌。最后,去論壇請教了大神应狱,換用了WKWebView來完成項目共郭。廢話不多說,下面來淺談一下兩者的區(qū)別疾呻。
UIWebView | WKWebView |
---|---|
內(nèi)存吃緊 | 內(nèi)存近乎于UIWebView的一半 |
加載耗時長 | 加載耗時速度相對較長 |
這是目前兩者間區(qū)別最大的部分
WKWebView的優(yōu)勢
- 適應(yīng)更多的HTML5特性
(因為當(dāng)下HTML5的動畫炫酷除嘹,并且屬于當(dāng)下熱門語言,發(fā)展確實尚好)
WKWebView使用
-(WKWebView *)webView{
if (!_webView) {
_webView = [[WKWebView alloc] initWithFrame:
CGRectMake(0, 85,
[UIScreen mainScreen].bounds.size.width,
[UIScreen mainScreen].bounds.size.height - self.headview.frame.size.height)];
_webView.backgroundColor = [UIColor whiteColor];
_webView.allowsBackForwardNavigationGestures = YES;
_webView.navigationDelegate = self;
}
return _webView;
}
使用WKNavigationDelegate代理方法(主要方法)
它還有UIDelegate代理方式【主要用于對窗口等的操作】
-(void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
//客戶端收到服務(wù)器跳轉(zhuǎn)請求后的操作(重要)
}
-(void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{
//開始加載時調(diào)用
}
-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
//加載完成時調(diào)用
}
-(void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error{
//加載失敗時候調(diào)用
}
UIWebView的使用
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
//準(zhǔn)備加載時候調(diào)用
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
//加載失敗時候調(diào)用
}
- (void)webViewDidStartLoad:(UIWebView *)webView{
//開始時候調(diào)用
}
- (void)webViewDidFinishLoad:(UIWebView *)webView{
//結(jié)束時候調(diào)用
}
注意
UIWebView的shouldStartLoad方法和WKWebView的decidePolicyForNavigation方法相似(不要和WKWebView的didStartProvisionalNavigation方法弄混)
使用WKWebView的時候一定要導(dǎo)入#import<WebKit/WebKit.h>