当 navigationController 弹出时,iOS WKWebView 在 ios 8 和 ios 9 上崩溃

Posted

技术标签:

【中文标题】当 navigationController 弹出时,iOS WKWebView 在 ios 8 和 ios 9 上崩溃【英文标题】:iOS WKWebView Crash on ios 8 and ios 9 When navigationController pop 【发布时间】:2017-07-06 16:57:05 【问题描述】:

我有一个自定义的wkwebView,称为SSWkWebView。 我有两个 viewControllers (A & B) 。 [self.view addsubview: SSWkWebView] 当我将 B VC 弹出到 A VC 时,发生了崩溃。 并且崩溃只发生在 ios 8 和 ios 9 上,但不会发生在 ios 10 上。

日志信息:objc[31702]:无法形成对实例的弱引用 (0x7ffe21182c00) NSKVONotifying_SSWKWebView 类。有可能的 该对象被过度释放,或正在处理中 解除分配。

我做了一些研究,这是链接: Login flow failing after upgrading to iOS9 这似乎不起作用。然后我尝试了另一种添加以下代码的方法:

- (void)dealloc 
wkWebView.scrollView.delegate = nil;

它也不起作用。

另外,我没有在dealloc函数中引用weakSelf。几十年来一直困扰着我。请提前帮助和感谢!

【问题讨论】:

您是否添加了任何通知观察者?喜欢 'addObserver:key:" 吗?请再分享几部分代码。 谢谢,我已经解决了这个问题。 很高兴您能够解决这个问题。请在答案部分发布您的解决方案。如果他们遇到同样的问题,它将帮助其他 SO 成员。提前致谢。 :-) @Johnic 你是怎么解决这个问题的 【参考方案1】:

对于 ObjC,

- (void)didMoveToSuperview 
    if (self.superview == nil) 
        self.scrollView.delegate = nil;
    

https://***.com/a/52046816/443530

【讨论】:

以上是关于当 navigationController 弹出时,iOS WKWebView 在 ios 8 和 ios 9 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章

弹出 NavigationController 时应用程序崩溃!

TabBarController + NavigationController:推送和弹出问题

弹出到 NavigationController 堆栈中的特定 ViewController

如果从navigationController弹出时会释放ViewController?

关闭(或弹出)我手动添加的 NavigationController 不起作用

Swift iOS - 如何使用 NavigationController 弹出到不同的 SegmentControl 索引