3

が埋め込まれた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];
}
4

1 に答える 1

2

マーク、

問題のあるコードを特定しました。欠落しているのは、ウィンドウを離したときにキーをnilに設定していないことですsetValue: nil forKey: @"console"。そうすれば、すべてがうまくいくでしょう。

アンドリュー

于 2012-06-06T13:34:09.323 に答える