が埋め込まれたCocoaアプリがありますWebView
。以下のコードを使用して、JavaScriptを介してウィンドウコントローラーにアクセスできるように設定しました。
問題はsetValue:self forKey:@"console"
、ウィンドウが閉じられた後にWebViewとウィンドウコントローラが解放されないという意味で、への呼び出しがARCでメモリリークを引き起こすように見えることです。
行をコメントアウトするsetValue
と、ウィンドウを閉じるとWebViewとコントローラーが自動的に解放されます。
試し[self.webView.windowScriptObject removeWebScriptKey:@"console"]
ましたが、うまくいきませんでした。
ウィンドウコントローラーにJavaScriptオブジェクトを追加するコード:
- (void)webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)windowObject
forFrame:(WebFrame *)frame {
if (frame != self.webView.mainFrame) return;
[self.webView.windowScriptObject setValue:self forKey:WELCOME_WINDOW_JS_NAME];
}