我有一个嵌入的 Cocoa 应用程序WebView
。我使用下面的代码将窗口控制器设置为可通过 JavaScript 访问。
问题是调用setValue:self forKey:@"console"
似乎在 ARC 下引入了内存泄漏,因为 WebView 和窗口控制器在窗口关闭后永远不会释放。
当我注释掉该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];
}