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卻還會被引用造成的問題。