最近将UIWebView替换成WKWebView,本来挺欢的,后来做深了之后,各种各样奇葩的问题接二连三的出现,实在令人崩溃,后来各种谷歌百度找解决方法,下面是自己遇到的坑,记录下来供有需要的参考。
-
问题:[WKCustomProtocolLoader connectionDidFinishLoading:] 报错
解决:WKWebViewConfiguration 的 processPool 要设置成单例模式import <WebKit/WebKit.h>
@interface WKProcessPool (SharedProcessPool)
- (WKProcessPool*)sharedProcessPool;
@end
import "WKProcessPool+SharedProcessPool.h"
@implementation WKProcessPool (SharedProcessPool)
- (WKProcessPool)sharedProcessPool {
static WKProcessPool SharedProcessPool;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
SharedProcessPool = [[WKProcessPool alloc] init];
});
return SharedProcessPool;
}
@end
webConfig.processPool = [WKProcessPool sharedProcessPool];
- (WKProcessPool*)sharedProcessPool;
scrollView的delegate为强引用,在跳转到下一个页面后引发崩溃
处理:viewWillDisappear、dealloc 设置
self.webView.scrollView.delegate = nil;
viewWillAppear 的时候 重新设置 self.webView.scrollView.delegate = self;ios 10.2 系统下,Safari开启了JSContexts检查,报以下错误
处理:关闭手机safari的web检查器
以上3个崩溃的出现,控制台里会出现打印空指针信息 pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug ,无再多其他有用的信息,但愿你们没遇到吧,反正我已经被折磨得成仙了>_<
还有遇到其他更奇葩的崩溃,欢迎反馈上来。