当我的WKWebView
子类(MyWKWebView
)dealloc
时,它会崩溃:
2016-05-05 15:40:08.814 MyApp [15559:202920] - [MyViewController dealloc]:在MyViewController中dealloc objc [15559]:无法形成弱点 引用MyWKWebView类的实例(0x7f9db7f0dbf0)。它是 可能是这个对象被过度释放,或者正在进行中 解除分配。
我没有对MyWKWebView
的弱引用,但MyWKWebView
本身对我的UIViewController
子类(MyViewController
)持有弱引用,MyWKWebView
拥有WKWebView
}。
思想?
答案 0 :(得分:2)
我没有意识到的一个显而易见的重要细节:我的MyWKWebView
子类(UIScrollViewDelegate
)符合WKWebView
。 (我正在努力使UIWebView
API与WKWebView
兼容,因此我可以轻松地在iOS7及更高版本之间进行交换。)
这很重要,因为UIScrollViewDelegate
已经符合#if TARGET_OS_IPHONE
WK_CLASS_AVAILABLE(10_10, 8_0)
@interface WKWebView : UIView
#else
,但在the header中却没有这样说:
@interface WKWebView () WK_WEB_VIEW_PROTOCOLS
但是,如果您查看WKWebViewInternal.h header,我们会看到一个可疑类别:
WK_WEB_VIEW_PROTOCOLS
如果我们在文件中进一步查看,我们会在iOS上看到<UIScrollViewDelegate>
为#if PLATFORM(IOS)
#define WK_WEB_VIEW_PROTOCOLS <UIScrollViewDelegate>
#endif
:
WKWebView
我找不到任何会明确导致过度发布的地方,但我肯定会因为不允许调用正确的UIScrollViewDelegate
方法而在UIScrollViewDelegate
中搞砸了。
解决方法是在单独的对象中实现{{1}}。