敬上原文链接:http://www.jianshu.com/p/8f5e1082f5e0
之前写过一篇文章(http://blog.csdn.net/helloworld_1986/article/details/52224153)介绍通过NSURLProtocol对UIWebView加载的网页进行数据缓存、加载本地资源提升混合开发h5部分的体验,但是WKWebView并不支持NSURLProtocol拦截处理,我也没有深入研究WebKit里面的相关源码。昨晚上看了这位大神的博客,甚是激动啊!早就想换成WKWebView了,奈何目前的项目正在使用基于NSURLProtocol这套缓存机制,所以吃完午饭赶紧研究研究了大神的博客。代码这东西还是要自己写一下才好,于是手动写了个小demo,初步实现了url拦截,图片替换的功能。
大神的博客已经讲的很清楚了,重点代码我贴一下
//注册scheme
Class cls = NSClassFromString(@"WKBrowsingContextController");
SEL sel = NSSelectorFromString(@"registerSchemeForCustomProtocol:");
if ([cls respondsToSelector:sel]) {
// 通过http和https的请求,同理可通过其他的Scheme 但是要满足ULR Loading System
[cls performSelector:sel withObject:@"http"];
[cls performSelector:sel withObject:@"https"];
}
实现效果如下图
下面两图是UIWebView和WKWebView加载相同的网页,内存占用对比图
如有疑问,请留言