最佳答案
我的视图控制器显示 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) {
// ...
}
到目前为止一切都很好,但是现在我发现我的视图控制器正在泄漏——当它应该被释放的时候,它没有:
deinit {
println("dealloc") // never called
}
似乎仅仅将我自己安装为消息处理程序就会导致保留循环,从而导致泄漏!