Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS WKWebView.scrollView委托导致错误的\u访问_Ios_Fixed - Fatal编程技术网

iOS WKWebView.scrollView委托导致错误的\u访问

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有一个UIView属性,其中包含WKWebView。我将WKWebView scrollView委托设置为我的viewController,它是UIView子类的一个公共函数,在我的viewController中调用

问题是,当我调用
[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中修复了它,因此代理现在存储得很弱,而不是之前的字符串:-)