我的viewController有一个包含WKWebView的UIView属性。我将WKWebView scrollView委托设置为我的viewController,它是我的UIView子类的公共函数,并在我的viewController中调用。
问题是,当我致电[viewController popViewControllerAnimated]
时,它会在[UIScrollView setDelegate:]
上崩溃。
我已在viewController' dealloc 中添加viewController.UIView.WKWebView.scrollView.delegate = nil;
来解决此问题。
但为什么呢? WKWebView的dealloc是在viewController的dealloc之后,我想viewController设置为nil,WKWebView中的dealloc会将其委托更新为nil然后导致BAD_ACCESS?但是为什么dealloc会明确调用setDelegate ???
答案 0 :(得分:3)
在WKWebView的类似情况下,我将委托给自己分配了类似的问题。实现deinit为我解决了:
deinit {
webView.scrollView.delegate = nil
}
答案 1 :(得分:0)
对于ObjC,在dealloc
中将scrollView委托设置为nil仍然会导致崩溃。
必须在didMoveToSuperview
- (void)didMoveToSuperview {
if (self.superview == nil) {
self.scrollView.delegate = nil;
}
}
这些线程帮助了我