iOS WKWebView.scrollView委托导致错误的\u访问
我的viewController有一个UIView属性,其中包含WKWebView。我将WKWebView scrollView委托设置为我的viewController,它是UIView子类的一个公共函数,在我的viewController中调用 问题是,当我调用iOS WKWebView.scrollView委托导致错误的\u访问,ios,fixed,Ios,Fixed,我的viewController有一个UIView属性,其中包含WKWebView。我将WKWebView scrollView委托设置为我的viewController,它是UIView子类的一个公共函数,在我的viewController中调用 问题是,当我调用[viewController-popViewControllerAnimated]时,它将在[UIScrollView-setDelegate:][/code>上崩溃。 我已经通过添加viewController.UIView.WK
[viewController-popViewControllerAnimated]
时,它将在[UIScrollView-setDelegate:][/code>上崩溃。
我已经通过添加viewController.UIView.WKWebView.scrollView.delegate=nil解决了这个问题代码>在viewController的解除锁定中
但是为什么呢?WKWebView的dealloc在viewController的dealloc之后,我想viewController设置为nil,WKWebView中的dealloc会将其委托更新为nil,然后导致错误的访问?但为什么dealloc会合法地调用setDelegate???在类似的情况下,对于WKWebView,我在将委托分配给self时遇到了类似的问题。为我实施Denit解决方案:
deinit {
webView.scrollView.delegate = nil
}
对于ObjC,在dealloc
中将scrollView委托设置为nil仍然会导致崩溃。
必须在didMoveToSuperview
- (void)didMoveToSuperview {
if (self.superview == nil) {
self.scrollView.delegate = nil;
}
}
这些线帮助了我
您能提供更多的信息吗?您是如何将滚动视图添加到视图的?是否有强引用?拯救了我的一天:-)它在iOS>9上运行,在iOS 9上崩溃。事实证明,苹果一定已经在iOS 10中修复了它,因此代理现在存储得很弱,而不是之前的字符串:-)