当我的WKWebView子类(MyWKWebView) dealloc运行时,它会崩溃:
2016-05 15:40:08.814 MyApp15559:202920 -MyViewController dealloc: In MyViewController dealloc objc15559:无法形成对类MyWKWebView的实例(0x7f9db7f0dbf0)的弱引用。这个对象可能被过度释放,或者正在被释放.
我没有对MyWKWebView的弱引用,但MyWKWebView本身保存了对我的UIViewController子类(MyViewController)的弱引用,后者拥有MyWKWebView。
有什么想法?
发布于 2016-05-05 21:19:53
一个显然很重要的细节我没有意识到:我的WKWebView子类(MyWKWebView)符合UIScrollViewDelegate。(我正在努力使WKWebView API与UIWebView兼容,以便在iOS7和更高版本之间轻松地交换它们。)
这很重要,因为WKWebView已经符合UIScrollViewDelegate,尽管它在标头中没有这么说
#if TARGET_OS_IPHONE
WK_CLASS_AVAILABLE(10_10, 8_0)
@interface WKWebView : UIView
#else但是,如果您查看WKWebViewInternal.h头,我们会看到一个可疑的类别:
@interface WKWebView () WK_WEB_VIEW_PROTOCOLS如果我们在文件中进一步查看,我们会发现WK_WEB_VIEW_PROTOCOLS是<UIScrollViewDelegate> on iOS:
#if PLATFORM(IOS)
#define WK_WEB_VIEW_PROTOCOLS <UIScrollViewDelegate>
#endif我找不到会显式导致过度发布的地方,但我肯定是在WKWebView中搞砸了一些东西,因为它不允许调用适当的UIScrollViewDelegate方法。
解决方法是在一个单独的对象中实现UIScrollViewDelegate。
https://stackoverflow.com/questions/37060442
复制相似问题