解决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的时间没有释放引起的。完美解决。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,171评论 1 32
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,494评论 0 9
  • 内存管理是程序在运行时分配内存、使用内存,并在程序完成时释放内存的过程。在Objective-C中,也被看作是在众...
    蹲瓜阅读 3,231评论 1 8
  • 作为一名应用开发者,你是否有过如下经历?经常被领导叫去,让看哪位哪位客户运行APP又崩溃了,感觉解决;天天被产品狗...
    继续向前冲阅读 2,916评论 0 9
  • 不是睡了太久,而是做梦太多了;不是混了太久,而是做梦太多了;不是等了太久,而是做梦太多了。 不必说出那...
    千面默墨阅读 167评论 0 1