Ios 应用程序与WKWebView和UINavigationController一起崩溃

Ios 应用程序与WKWebView和UINavigationController一起崩溃,ios,objective-c,uinavigationcontroller,wkwebview,Ios,Objective C,Uinavigationcontroller,Wkwebview,我正在使用故事板构建一个应用程序。我还使用UINavigationController 其中一个视图有一个工具栏,有一个barButtonItem,它直接连接到另一个视图作为“show”segue,并且视图显示正确 要显示的视图将创建WKWebView的实例。在此视图中,WKWebView工作正常 但当我点击NavigationBar的back按钮时,应用程序崩溃,即使我设置了所有异常,我也无法对异常进行cat 在使用WKWebView的视图的viewDidLoad中 WKWebViewConf

我正在使用故事板构建一个应用程序。我还使用UINavigationController

其中一个视图有一个工具栏,有一个barButtonItem,它直接连接到另一个视图作为“show”segue,并且视图显示正确

要显示的视图将创建WKWebView的实例。在此视图中,WKWebView工作正常

但当我点击NavigationBar的back按钮时,应用程序崩溃,即使我设置了所有异常,我也无法对异常进行cat

在使用WKWebView的视图的viewDidLoad中

WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
configuration.allowsInlineMediaPlayback = YES;
configuration.allowsAirPlayForMediaPlayback = YES;
configuration.requiresUserActionForMediaPlayback = YES;
configuration.allowsPictureInPictureMediaPlayback = YES;

webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];
webView.translatesAutoresizingMaskIntoConstraints = NO;
webView.allowsLinkPreview = YES;
webView.allowsBackForwardNavigationGestures = YES;
[_childView addSubview:webView];

webView.navigationDelegate = self;
webView.UIDelegate = self;
// Autolayout
NSDictionary *views = NSDictionaryOfVariableBindings(webView);
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[webView(>=0)]-0-|" options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[webView(>=0)]-0-|" options:0 metrics:nil views:views]];

// Propertiesの監視
[webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil];
[webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:nil];
[webView addObserver:self forKeyPath:@"loading" options:NSKeyValueObservingOptionNew context:nil];
[webView addObserver:self forKeyPath:@"canGoBack" options:NSKeyValueObservingOptionNew context:nil];
[webView addObserver:self forKeyPath:@"canGoForward" options:NSKeyValueObservingOptionNew context:nil];
我创建了WKWebView的实例

当我点击UINavigationController时,如何避免崩溃


提前感谢。

WKWebView已解除分配,而key-value Observators仍在其中注册,我认为您应该在Denit时删除该Observator。例如:

deinit 
{
    webview.removeObserver(self, forKeyPath: "estimatedProgress")
}

WKWebView被解除分配,而键值观察器仍在其中注册,我认为您应该在Denit时删除该观察器。例如:

deinit 
{
    webview.removeObserver(self, forKeyPath: "estimatedProgress")
}

也许,您的web视图试图将一些委派的方法发送给已经不存在的控制器。要快速检查,请尝试将VIEWWILLENGISE上的代理设置为零。如果是这种情况,你应该考虑如何在控制器消失时释放web视图。尼克,谢谢你的建议。我将这些委托设置为零,但应用程序仍然崩溃。我发现我需要删除观察员。然后应用程序就可以正常工作了。非常感谢。也许,您的web视图试图将一些委派的方法发送给已经不存在的控制器。要快速检查,请尝试将VIEWWILLENGISE上的代理设置为零。如果是这种情况,你应该考虑如何在控制器消失时释放web视图。尼克,谢谢你的建议。我将这些委托设置为零,但应用程序仍然崩溃。我发现我需要删除观察员。然后应用程序就可以正常工作了。非常感谢。非常感谢你!非常感谢你!