解决iOS11以下系统WKWebView崩溃

问题1描述:

老版代码WKWebView存在内存泄漏,控制器一直没有dealloc,导致每次访问都内存都在增加

问题原因

在WKWebView只有:addScriptMessageHandler 方法,没有添加移除方法,应该添加:removeScriptMessageHandlerForName的方法。问题解决

问题2描述

在添加完removeScriptMessageHandlerForName之后,控制器开始走dealloc方法了,但是在iOS11以下系统上crash.

问题解决思路:

1:看崩溃日志


日志.jpg

这个崩溃日志没有关键信息,需要找到关键信息所以在main函数中添加了这样的代码,查看关键信息:

  
        @try {
            @autoreleasepool
            {
                return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
            }
        }
        @catch (NSException* exception)
        {
            NSLog(@"Exception=%@\nStack Trace:%@", exception, [exception callStackSymbols]);
        }

可以查看到信息是这样的:


崩溃日志.jpg

根据日志分析可以看出来是因为:有一个observers在控制器dealloc的时间没有释放引起的。完美解决。

你可能感兴趣的:(解决iOS11以下系统WKWebView崩溃)