【发布时间】:2012-06-05 12:20:34
【问题描述】:
我有一个嵌入了 WebView 的 Cocoa 应用程序。我使用下面的代码将窗口控制器设置为可通过 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];
}
【问题讨论】:
标签: cocoa memory-leaks webview webkit automatic-ref-counting