我的视图控制器显示WKWebView.我安装了一个消息处理程序,一个很酷的Web Kit功能,允许从网页内部通知我的代码:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let url = // ...
self.wv.loadRequest(NSURLRequest(URL:url))
self.wv.configuration.userContentController.addScriptMessageHandler(
self, name: "dummy")
}
func userContentController(userContentController: WKUserContentController,
didReceiveScriptMessage message: WKScriptMessage) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都很好,但现在我发现我的视图控制器正在泄漏 - 当它应该被释放时,它不是:
deinit {
println("dealloc") // never called
}
Run Code Online (Sandbox Code Playgroud)
看起来只是将自己安装为消息处理程序会导致保留周期,从而导致泄漏!