美文网首页奇葩bug搜集
遇到一个delegate未置空导致的问题

遇到一个delegate未置空导致的问题

作者: Funnyer | 来源:发表于2017-06-21 11:49 被阅读552次

    1、报错信息:

    Cannot form weak reference to instance (0x7f932cb05fb0) of class FWebViewController. It is possible that this object was over-released, or is in the process of deallocation.

    2、问题描述:

    A控制器(包含scrollView及其子类,并设置了其代理),B控制器(WKWebView,并设置了webView.scrollView.delegate = self),当A push 到 B,然后B pop回 A时,iOS9及其之前的版本会引起程序崩溃,iOS10 及其以后不会出现这样的问题。

    3、解决办法:

    根据报错信息来看:这个对象有可能是被过度释放,或正在被释放的过程中。
    解决方案就是在B将要退出时把webView.scrollView.delegate = nil
    在dealloc中清空代理,手动释放delegate。

    4、疑问?

    webView.scrollView.delegate应该和之前的A控制器的scrollview的delegate是没关系的,为什么导致崩溃的原因中感觉是有关系的?希望大神可以解释一下。

    5、知识扩展:

    delegate可以在dealloc里面置为nil,这是一个保险的做法,但是又不是必须的。这样做的原因是可以避免这个类被释放掉了,但是delegate却还会被引用造成的问题。

    相关文章

      网友评论

        本文标题:遇到一个delegate未置空导致的问题

        本文链接:https://www.haomeiwen.com/subject/sqizqxtx.html