iOS 9 WKWebView 设置UIScrollViewDelegate崩溃问题

问题描述

系统要求:iOS 9.x 及之前版本
设备要求:无
问题详情:使用WKWebView时,设置了scrollView的delegate,但是在关闭页面时没有设回nil,在webView的dealloc时就会崩溃。

_webView.scrollView.delegate = self;

崩溃日志

问题关键堆栈信息

- [UIScrollView setDelegate:] + 40
- [WKScrollView _updateDelegate] + 228
- [WKWebView dealloc] + 216

原因分析

WebKit的bug,因为时iOS 9 及之前版本,初步估计是苹果对于delegate的处理没有达到weak的预期情况,导致在退出当前ViewController的时候更新webView的delegate,还是使用了已经释放的ViewController
在iOS 10苹果已经把问题修复了。

解决方案

在页面关闭时,或者页面dealloc时,把scrollView的delegate设回nil。

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

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,160评论 1 32
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,800评论 1 9
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 5,300评论 1 23
  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,557评论 1 14
  • 今天很累,随笔写写 最近家附近开了家36524便利店,每天都吸引不少人,今天也去凑个热闹才发现,所谓的第二件半价是...
    静海设计阅读 351评论 0 2